码迷,mamicode.com
首页 > 其他好文 > 详细

Invert Binary Tree

时间:2015-06-16 09:24:22      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

Invert a binary tree.

     4
   /     2     7
 / \   / 1   3 6   9
to
     4
   /     7     2
 / \   / 9   6 3   1
Trivia:
This problem was inspired by this original tweet by Max Howell:

Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.

题目解析:

将一棵树的左右子树互换。

方法一:

迭代的方法,从树根到树叶,由上往下,广度遍历此树的每一个节点,将此节点的左右子节点互换,直到遍历完整棵树。代码如下:
class Solution {
public:
    
    TreeNode* invertTree(TreeNode* root) {
       if(root==NULL) return NULL;
      
       deque<TreeNode*> qu;
       qu.push_front(root);
       while(!qu.empty())
       {
           TreeNode* node=qu.front();
            TreeNode* left=node->left;
            node->left=node->right;
           node->right=left;
           qu.pop_front();
           if(node->left)
           qu.push_front(node->left);
           if(node->right)
           qu.push_front(node->right);
       }
       return root;
    }
};

方法二

用递归的方法,相同的条件是,经invertTree函数的节点root的左子树是该root原来的右子树转换之后的,也就是说从下往上的过程。代码如下:
class Solution {
public:
    
    TreeNode* invertTree(TreeNode* root) {
       if(root==NULL) return NULL;
       TreeNode* left=root->left;
       TreeNode* right=root->right;
       root->left=invertTree(right);
       root->right=invertTree(left);
       return root;
    }
};



Invert Binary Tree

标签:

原文地址:http://blog.csdn.net/sinat_24520925/article/details/46509115

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!