翻转一棵二叉树。
示例:
输入:
4 / \ 2 7 / \ / \ 1 3 6 9
输出:
4 / \ 7 2 / \ / \ 9 6 3 1
思路:一道有名又简单的问题,这道题也是用递归的思路。对于一个结点,让它左右子结点对调即可。这里呢我是先将左右子结点反转,再分别反转左右子节点的子节点…依次类推,直至结束…也可以先把做下面的反转,最后再反转左右结点。顺序不一样而已。
/**
* 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) return NULL;
TreeNode* tmp=root->left;
root->left=root->right;
root->right=tmp;
invertTree(root->left);
invertTree(root->right);
return root;
}
};