如何将一棵树转化成二叉树

要点:

从这棵树的根结点开始,从上到下,看每一个结点,把你正在看的结点的孩子放在左子树,兄弟放在右子树。

口诀:

1. 将 节点的孩子 放在左子树;

2. 将 节点的兄弟 放在右子树。

关于这个问题,最好的办法就是记住一道例题了,因为语言不是很好描述,也不容易看懂描述。

例题:

或者有另一种理解方法:

步骤:

1.在所有兄弟结点之间加一连线

2.对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。

如下图所示:

————————————————
版权声明:本文为CSDN博主「猫萌萌」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tjh625/article/details/87839191

原文地址:https://www.cnblogs.com/youknowUL/p/11546358.html

时间: 2024-10-10 13:00:52

如何将一棵树转化成二叉树的相关文章

如何将一棵树转化为对应的二叉树

如何将一棵树转化为对应的二叉树? 解答: 1. 将 节点的孩子 放在左子树: 2. 将 节点的兄弟 放在右子树. 例题: 答案: 延伸: 任何一棵树都可以表示成二叉树,并不是任何一棵二叉树都可以表示成树.那么树多还是二叉树多? 1. 任何一棵树都可以表示成二叉树,结合以上题目很容易理解. 2.不是任何一棵二叉树都可以表示成树: 当根节点包含右子树的时候,就无法表示成树了. 3. 树多还是二叉树多的问题: 二叉树也是树的一种,如果按照包含关系来说,树肯定包含二叉树了,树多一些

POJ 3437 Tree Grafting(有序树转化为二叉树)

Tree Grafting Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1834   Accepted: 795 Description Trees have many applications in computer science. Perhaps the most commonly used trees are rooted binary trees, but there are other types of r

二元查找树转化成排序的双向链表——要求不创建新的节点

码完第一次编译运行居然就成功了...高兴~ 问题描述: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向.例如: 10 /    \ 6     14 / \      /  \ 4   8  12  16 转换成双向链表 4=6=8=10=12=14=16 算法: 如果没有"不能创建任何新的结点"的限制,只需进行一次中序遍历,对每个节点的data值构造一个新节点即可. 由于条件限制,现在我们只能用现有的节点,调整他们的指针指向,把

数据结构之二叉树 树结构练习---判断给定森林中有多少棵树

树结构练习——判断给定森林中有多少棵树 Time Limit: 1000MS Memory limit: 65536K 题目描述 众人皆知,在编程领域中,C++是一门非常重要的语言,不仅仅因为其强大的功能,还 因为它是很多其他面向对象语言的祖先和典范.不过这世上几乎没什么东西是完美的,C++也不例外,多继承结构在带来强大功能的同时也给软件设计和维护带来 了很多困难.为此,在java语言中,只允许单继承结构,并采用接口来模拟多继承.KK最近获得了一份java编写的迷你游戏的源代码,他对这份代码非常

【转】将一棵树转换为二叉树后,为什么根节点没有右子树

树转化为二叉树时结点左子树是原来的孩子结点,右子树是原来的兄弟结点.即取根节点左孩子向右连接他的兄弟结点(在同一层次的节点,原来互不相连)并把它的子树,而把除左孩子外,原来与根节点相连的线擦除.这样根节点没有右孩子,因为由树转化来的二叉树某个节点A的左子树是原来作为树时A的孩子,其右子树是他的兄弟. 原文地址:https://www.cnblogs.com/schips/p/10630811.html

无根树转化成有根树

在不少题目中会遇到这样一类题:无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号.......很明显是个树结构,但是不知道具体的父子关系,这时需要将一棵无根树转化成有根树,具体讲解如下: 1.树的存储:若点数较大,需要用vector存储 vector<int> G[maxn]; void read_tree(){ int u,v; scanf("%d",&N); for(i=1;i<=N-1;i++){ scanf("%d%d&q

树/森林和二叉树的转换

树转二叉树 左儿子右兄弟,即第一个儿子是左二子,第一个兄弟是右儿子,然后按层次按顺序调整每一个即可. 规范做法是三步: 加线: 同一层的兄弟按顺序加线. 去线: 保留第一个儿子,其他儿子连线删掉. 调整层次. 森林转二叉树 先将每个树转成二叉树,然后从第二棵开始,把每一棵二叉树的根都作为前一棵的右儿子. 二叉树转树 根据树转二叉树,考虑逆过程,如果一个节点有左儿子,那么这个左二子的右儿子,右儿子的右儿子,...都是该节点的兄弟节点. 规范做法也是三步: 加线: 左儿子的右儿子,左儿子的右儿子的右

判断一棵树是否为完全二叉树

完全二叉树:若一棵二叉树具有具有n个节点,它的每个节点都与高度为k的满二叉树编号为0~n-1结点一一对应,则称这可二叉树为完全二叉树. 方法一:一维数组存储 根据完全二叉树的定义和性质,利用一位数组作为完全二叉树的存储,如下图 由图,节点的编号与数组元素的下标是一一对应的,可根据二叉树的性质,可方便找出下标 为i的的双亲结点a[i/2]及左右孩子结点a[i*2],a[i*2+1].这样判断一棵树是否为二叉树,应该对此二叉树从上到下,从左到右依次编号, 然后把编好的号依次存入一位数组中,在与相应深

BNU 28887——A Simple Tree Problem——————【将多子树转化成线段树+区间更新】

A Simple Tree Problem Time Limit: 3000ms Memory Limit: 65536KB This problem will be judged on ZJU. Original ID: 368664-bit integer IO format: %lld      Java class name: Main Prev Submit Status Statistics Discuss Next Type: None None Graph Theory 2-SA