【每日一題-leetcode】226.翻轉二叉樹

226.翻轉二叉樹

  1. 翻轉二叉樹

難度簡單413

翻轉一棵二叉樹。

示例:

輸入:

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

輸出:

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

1.DFS

time : O(n)

space: O(n) 最好 O(1) 最壞 O(n)退換成鏈表

  //1.遞歸  DFS
        public TreeNode invertTree(TreeNode root) {
            if(root == null)    return null;
            TreeNode tmp = root.left;  
            root.left = invertTree(root.right);  
            root.right = invertTree(tmp);
            return root;
        }

2.棧

time:O(n)

space:O(n)

   //棧
        public TreeNode invertTree(TreeNode root) {
            if(root == null) return null;
            Stack<TreeNode> stack = new Stack<>();
            stack.push(root);
            while(!stack.isEmpty()){
                TreeNode t = stack.pop();
                if(t.left != null) stack.push(t.left);
                if(t.right != null) stack.push(t.right);
                TreeNode tmp = t.left;
                t.left = t.right;
                t.right = tmp;  
            }
            return root;
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章