Invert Binary Tree

来源:互联网 发布:数控车u型槽的编程 编辑:程序博客网 时间:2024/04/28 10:23

Invert a binary tree.

     4   /   \  2     7 / \   / \1   3 6   9
to
     4   /   \  7     2 / \   / \9   6 3   1

Solution1,递归

/** * 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;                    }};

Solution2,类似树的层次遍历,使用队列

/** * 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;        queue<TreeNode *> myQueue;        myQueue.push(root);        while(!myQueue.empty())        {            TreeNode * curNode = myQueue.front();            myQueue.pop();            TreeNode * tmpNode = curNode->left;            curNode->left = curNode->right;            curNode->right = tmpNode;                        if(curNode->left)               myQueue.push(curNode->left) ;             if(curNode->right)             myQueue.push(curNode->right) ;        }                return root;                    }};



0 0
原创粉丝点击