Flatten Binary Tree to Linked List 将二叉树转成链表形式

来源:互联网 发布:淘宝博库图书专营店 编辑:程序博客网 时间:2024/06/05 09:05

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. 将root 与左右子树形成的线拼接起来。

运行时间:


代码:

public class FlattenBinaryTreetoLinkedList {    public void flatten(TreeNode root) {        if (root == null) {            return;        }        TreeNode left = root.left;        TreeNode right = root.right;        root.left = null;        flatten(left);        flatten(right);        root.right = left;        TreeNode cur = root;        // go to the last node of flattened left.        while (cur.right != null) {            cur = cur.right;        }        cur.right = right;    }}


1 0
原创粉丝点击