226. Invert Binary Tree

来源:互联网 发布:java float和Float 编辑:程序博客网 时间:2024/06/07 00:57

题目:

Invert a binary tree.

     4   /   \  2     7 / \   / \1   3 6   9
to
     4   /   \  7     2 / \   / \9   6 3   1
思路:

1.层次遍历法,每层遍历就替换左右结点;

2.递归法

代码(层次遍历法):

class Solution {public:    TreeNode* invertTree(TreeNode* root) {        if(root==NULL)            return root;        queue<TreeNode *> q;        q.push(root);        while(!q.empty())        {            for(int i = 0, n = q.size(); i < n; ++ i)          {              TreeNode *temp;            TreeNode *p = q.front();             q.pop();            temp = p->left;            p->left = p->right;            p->right = temp;            if(p -> left != NULL){                q.push(p -> left);            }                                if(p -> right != NULL)             {                q.push(p -> right);            }                          }        }        return root;            }};

代码(递归法):

class Solution {public:    TreeNode* invertTree(TreeNode* root) {        if(root==NULL)              return NULL;          TreeNode * temp = root->left;          root->left = invertTree(root->right);          root->right = invertTree(temp);          return root;    }};



原创粉丝点击