[LeetCode] Flatten Binary Tree to Linked List

Posted blfbuaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 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

大象放入冰箱几步的思路处理这问题就好了

1.把左子树弄平, 2. 插入到根节点和根节点的右子树之间,3. 反复1。2

思路不难,代码上有点混乱。细节实现是:把root的左子树弄成flatten的 flatten(root.left),把右子树保存起来 temp=root.right,让root.right=root.left, 然后断掉左边,root.left=null.

然后一直走到右边的最末端,while(root.right!=null) root=root.right  然后root.right=temp,继续处理。

 一次通过。代码例如以下:

public void flatten(TreeNode root) {
        if(root==null) return;
        TreeNode p=root;
        while(p!=null){
            if(p.left==null){
                p=p.right;
            } else {
                if(p.right==null) {
                    TreeNode temp=p.left;
                    p.left=null;
                    p.right=temp;
                    p=p.right;
                } else {
                
                TreeNode tempRight=p.right;
                TreeNode tempLeft=p.left;
                p.right=null;
                flatten(p.left);
                p.left=null;
                p.right=tempLeft;
                while(p.right!=null){
                    p=p.right;
                }
                p.right=tempRight;
                }
            }
            
        }
        
    }







以上是关于[LeetCode] Flatten Binary Tree to Linked List的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode] Flatten Binary Tree to Linked List

leetcode 114. Flatten Binary Tree to Linked List (Python版)

Leetcode 之Flatten Binary Tree to Linked List(50)

LeetCode 114. Flatten Binary Tree to Linked List

leetcode Flatten Binary Tree to Linked List

leetcode--114. Flatten Binary Tree to Linked List