15算法课程 226. Invert Binary Tree

来源:互联网 发布:俞兆林内裤怎么样知乎 编辑:程序博客网 时间:2024/06/16 15:26



Invert a binary tree.

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

to

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

Solution

用递归算法解决,首先交换根节点的左右子树,再对左右子树递归交换。
递归的终止条件是当前节点为NULL


Code

/** * 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 root;        TreeNode * tmp = root->left;        root->left = invertTree(root->right);        root->right = invertTree(tmp);        return root;    }};