• 【LeetCode】114. Flatten Binary Tree to Linked List


    Flatten Binary Tree to Linked List

    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
    

    click to show hints.

    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 binary tree
     * 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)
                return;
    
            TreeNode* newtail = new TreeNode(-1);
            stack<TreeNode*> stk;
            stk.push(root);
            while(!stk.empty())
            {
                TreeNode* top = stk.top();
                newtail->right = top;
                newtail = newtail->right;
                stk.pop();
                
                if(top->right)
                    stk.push(top->right);
                if(top->left)
                    stk.push(top->left);
                    
                top->left = NULL;
                top->right = NULL;
            }
        }
    };

  • 相关阅读:
    全局变量、局部变量
    结构体位域
    关键字(static const volatile extern sizeof)
    预处理#
    头文件<time.h>
    头文件<string.h>
    头文件<stdlib.h>
    session 入库
    php中的匿名函数和闭包
    redis 的 RDB 和 AOF 持久化的区别
  • 原文地址:https://www.cnblogs.com/ganganloveu/p/4130792.html
Copyright © 2020-2023  润新知