• Leetcode 114. 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


    /**
     * 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) {
           TreeNode *pre = nullptr; //记住前一结点
           helper(root,pre);        //前序遍历
        }
        void helper(TreeNode *root, TreeNode *&pre) // 注意这里是一个指针的引用,pre是全局变量,不断变化
        {
            if (root == nullptr) return;
            if (pre != nullptr)
            {
                pre -> left = nullptr; // 将前一结点的左指针置空
                pre -> right = root;   // 将前一结点的右指针指向当前的根节点
            }
            pre = root;
            TreeNode *left = root -> left;
            TreeNode *right = root -> right;
            if (left != nullptr)   // 对左子树进行遍历
                helper(left,pre);  
            if (right != nullptr)  // 对右子树进行遍历
                helper(right,pre);
        }
    };
  • 相关阅读:
    List数组细解
    iOS之缓存
    Java_String的操作
    weak的理解
    Swift_单利
    Java 抽象类和接口
    Java 继承中的问题
    java 成员变量与局部变量
    纪中第十九天
    cin快读
  • 原文地址:https://www.cnblogs.com/simplepaul/p/6733791.html
Copyright © 2020-2023  润新知