leetcode114. 二叉树展开为链表(深度优先搜索)

70 阅读1分钟
给定一个二叉树,原地将它展开为一个单链表。

 

例如,给定二叉树

    1
   / \
  2   5
 / \   \
3   4   6
将其展开为:

1
 \
  2
   \
    3
     \
      4
       \
        5
         \
          6

代码


class Solution {
     public void flatten(TreeNode root) {

           flat(root);
    }
    public TreeNode flat(TreeNode root) {
           if(root==null) return null;
           TreeNode left=root.left,right=root.right;//记录下左右子树
           root.right=flat(left);将左子树连在右子树上
           TreeNode temp=root;
           while (temp.right!=null)//遍历当前右子树到末尾
               temp=temp.right;
           temp.right=flat(right);//再将原来的右子树连接到末尾
          root.left=null;
           return root;
    }
}