1. 程式人生 > 實用技巧 >LeetCode題解No226——“翻轉二叉樹”

LeetCode題解No226——“翻轉二叉樹”

LeetCode題解

No226

難度:Easy

題目描述:

/*
翻轉一棵二叉樹。

示例:

輸入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9
輸出:

     4
   /   \
  7     2
 / \   / \
9   6 3   1

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/invert-binary-tree
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
 */

題目思路

   本題思路就是最經典的深搜的思路了,向下遞迴,遞迴到最底端,交換左右兩節點,再一層一層向上修改即可。

程式碼執行

public class No226 {
   public static void main(String[] args) {

   }
   public class TreeNode{
       int val;
       TreeNode left;
       TreeNode right;
       TreeNode(int x){
           val = x;
       }
   }
   // 直接dfs即可
   public TreeNode invertTree(TreeNode root) {
       // 退出深搜條件
       if (root == null){
           return null;
       }
       // 遞迴左右子樹
       TreeNode left = invertTree(root.left);
       TreeNode right = invertTree(root.right);
       // 進行交換
       root.left = right;
       root.right = left;
       //返回
       return root;
   }
}

糾錯

執行結果