Invert Binary Tree
问题描述:翻转一棵二叉树。
example
input:
4
/
2 7
/ \ /
1 3 6 9
output:
4
/
7 2
/ \ /
9 6 3 1
问题解决:将每个节点的左右子树翻转即可,如果遇到叶子节点,则直接返回该节点。
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
TreeNode *tmp;
if(!root)
return root;
//如果是叶子节点
if(!root->left&&!root->right)
return root;
//如果是非叶子节点,左右子树翻转,并递归下去
else if(root->left||root->right)
{
tmp=invertTree(root->left);
root->left=invertTree(root->right);
root->right=tmp;
}
return root;
}
};