zoukankan      html  css  js  c++  java
  • 114. Flatten Binary Tree to Linked List -- 将二叉树转成链表(in-place单枝树)

    Given a binary tree, flatten it to a linked list in-place.

    For example,
    Given

             1
            / 
           2   5
          /    
         3   4   6
    

    The flattened tree should look like:

       1
        
         2
          
           3
            
             4
              
               5
                
                 6
    Hints:

    If you notice carefully in the flattened tree, each node's right child points to the next node of a pre-order traversal.

    /**
     * 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) {
            stack<TreeNode*> s;
            TreeNode *p = root, *pre = NULL;
            while(p || !s.empty())
            {
                while(p)
                {
                    if(pre)
                    {
                        pre->right = p;
                        pre = NULL;
                    }
                    if(!p->left && !p->right)
                        pre = p;
                    s.push(p);
                    p = p->left;
                }
                if(!s.empty())
                {
                    p = s.top();
                    s.pop();
                    p = p->right;
                }
            }
            for(p = root; p; p = p->right)
            {
                if(p->left)
                {
                    p->right = p->left;
                    p->left = NULL;
                }
            }
        }
    };
  • 相关阅读:
    Android安全机制
    service不死之身
    图片加载机制比较
    handler机制面试
    SharedPreferences封装类
    文字太长自动缩小
    ANR
    onCreate源码分析
    线程池的启动策略
    Oauth认证协议
  • 原文地址:https://www.cnblogs.com/argenbarbie/p/5416052.html
Copyright © 2011-2022 走看看