您的位置:首页 > 其它

leetCode #226 Invert Binary Tree

2015-08-08 20:15 288 查看
题目:将二叉树左右反转

分析:可以采用递归的方法反转每个节点的左右子树。非递归的话其实就是层序遍历然后反转其左右节点就行了。

答案:

递归:

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if( root == NULL)
return NULL;
TreeNode *tmpNode = root->left;
root->left = invertTree(root->right);
root->right = invertTree(tmpNode);

}
};


遍历:

/**
* Definition for a binary tree node.
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if( root == NULL)
return NULL;
queue<TreeNode*> node_queue;
node_queue.push(root);
while(node_queue.size()>0){
TreeNode *currentNode = node_queue.front();
node_queue.pop();
// exchange
TreeNode *tmpNode = currentNode->left;
currentNode->left = currentNode->right;
currentNode->right = tmpNode;
if (currentNode->left)
node_queue.push(currentNode->left);
if (currentNode->right)
node_queue.push(currentNode->right);
}
return root;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: