LeetCode226——Invert Binary Tree

  翻转树的值,看上去很简单。看到树就递归吗?我还是采用了非递归的方式,用一个辅助队列来帮忙。将树的节点一个个塞进去。然后在队列里将节点左右孩子进行交换达到目的。

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

 反思:

 1.熟知树的遍历方式有助于解体。

 2.递归算法也不能丢啊。

 

posted on 2015-12-08 11:12  MMac  阅读(125)  评论(0编辑  收藏  举报

导航