• 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.递归算法也不能丢啊。

  • 相关阅读:
    2019 西安邀请赛 D
    time 库
    字符串处理+格式化输出
    数据类型
    turtle1
    格式问题
    字符串1
    基础操作
    链表去重
    PAT 1093
  • 原文地址:https://www.cnblogs.com/thewaytomakemiracle/p/5028495.html
Copyright © 2020-2023  润新知