zoukankan      html  css  js  c++  java
  • leecode第一百一十四题(二叉树展开为链表)

    /**
     * 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:
        void flatten(TreeNode* root) {
            if(root==NULL)//记住!root可能为[]
                return;
            
            stack<TreeNode*> temp;
            TreeNode* first=root;//记住上一个节点
            if(root->right!=NULL)
                temp.push(root->right);
            if(root->left!=NULL)
                temp.push(root->left);
            
            while(!temp.empty())
            {
                TreeNode* node=temp.top();//前序遍历
                temp.pop();
                if(node->right!=NULL)
                    temp.push(node->right);
                if(node->left!=NULL)
                    temp.push(node->left);
                
                first->right=node;//同时原地记录顺序
                first->left=NULL;
                first=node;
            }
        }
    };

    分析:

    思路很简单,就是前序遍历里加一点东西就好。

  • 相关阅读:
    The Sixth Assignment
    The fifth assigiment
    网络编程
    面向对象
    python数据类型之集合
    python数据类型之列表
    python数据类型之字符串
    python数据类型之字典
    python数据类型之元组
    常用模块
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/11223295.html
Copyright © 2011-2022 走看看