千家信息网

python中怎样实现二叉树展开为链表

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章给大家介绍怎样实现二叉树展开为链表,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。二叉树展开为链表1,问题简述给定一个二叉树,原地将它展开为一个单链表。2,示例简述例如,给
千家信息网最后更新 2024年11月23日python中怎样实现二叉树展开为链表

这篇文章给大家介绍怎样实现二叉树展开为链表,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

二叉树展开为链表

1,问题简述

给定一个二叉树,原地将它展开为一个单链表。

2,示例简述

例如,给定二叉树

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

1
\
2
\
3
\
4
\
5
\
6


3,题解思路

重新构建一下二叉树

4,题解程序

import java.util.LinkedList;
import java.util.List;

public class FlattenTest2 {
public static void main(String[] args) {
TreeNode t1 = new TreeNode(1);
TreeNode t2 = new TreeNode(2);
TreeNode t3 = new TreeNode(5);
TreeNode t4 = new TreeNode(3);
TreeNode t5 = new TreeNode(4);
TreeNode t6 = new TreeNode(6);
t1.left = t2;
t1.right = t3;
t2.left = t4;
t2.right = t5;
t3.right = t6;
flatten(t1);
System.out.println("t1 = " + t1);
}

public static void flatten(TreeNode root) {
if (root == null) {
return;
}
LinkedList list = new LinkedList<>();
dfs(root, list);
TreeNode head = list.removeFirst();
head.left = null;
while (list.size() > 0) {
TreeNode tempNode = list.removeFirst();
tempNode.left = null;
head.right = tempNode;
head = head.right;

}


}

private static void dfs(TreeNode root, List list) {
if (root == null) {
return;
}
list.add(root);
if (root.left != null) {
dfs(root.left, list);
}
if (root.right != null) {
dfs(root.right, list);
}
}
}

关于怎样实现二叉树展开为链表就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0