4个结点的二叉树画法
@佟玉2757:有谁知道二叉树是怎么画出来的? -
乌燕13191314035…… 二叉树的画法可以分为: 1、确定根节点 2、确定该节点的左儿子与右儿子 3、递归下去,直到所有节点都不再有儿子节点 根据二叉树具体的存储结构,确定根及儿子节点的方法也不一样 从你这图来看,A-G是按层遍历的,既自顶至下,自左至右的顺序遍历 如果是用数组来存,可以表示为 索引 0 1 2 3 4 5 6 7 8 节点 A B C D 空 E F 空 G 其中第一个节点即为根节点 索引号为i的节点的: 左儿子索引号2i+1 右儿子索引号为2i+2 从根节点开始递归下去,就可以画出整个树;饿 如果是链表存储,其物理地址与逻辑地址就没有直接联系了,只能靠节点之间的逻辑来推了
@佟玉2757:知道二叉树先序,中序,后序其中的两个顺序列,如何画出二叉树 -
乌燕13191314035…… (1)由先序遍历序列和后序遍历序列不能唯一确定一棵二叉树. (2)由先序遍历序列和中序遍历序列能够唯一确定一棵二叉树. 设先序序列为:a1,a2,……,an , 中序序列为:ap1,…,api, a1, …,apn .则a1为根结点;ap1,…,api为左子树的中序序...
@佟玉2757:四个结点可以构成( )种不同形状的二叉树.那N个节点呢?大家能告诉我什么公式、或者方法? - 作业帮
乌燕13191314035…… [答案] 设n个节点的二叉树有f(n)种 N个节点,其中1个为根节点,则剩下有n-1个节点,这n-1个节点可以: 0个作为根节点的左子树(1种方法),n-1个节点作为根节点的右子树(f(n-1)种方法) 1个节点作为左子树(1种方法),n-2个节点作为右子树(f...
@佟玉2757:知道二叉树遍历怎样画出二叉树 -
乌燕13191314035…… 先序你要记住是 根-左-右的顺序,而中序是 左-根-右.对于知道先和中序的情况,首先根据先序可以确定第一个是根结点.然后看这个二叉树是否有右子树,如果有,那么对于中序来说,根结点后面肯定还有结点,且中序中根节点后第一个结点...
@佟玉2757:数据结构问题 由4个节点可以构造出多少种不同的二叉树? -
乌燕13191314035…… 看了你上面的理解,你可能认为1节点和2、3、4节点不同,其实4个节点是相同的.例如: 1 2 \ \ 3 4 \ \ 2 1 \ \ 4 3 这两个是相同的,因为节点是相同的!所以你上面的理解有重复出现的情况,所以才会多!
@佟玉2757:利用逐点插入法建立二叉树 -
乌燕13191314035…… 二叉树排序目标就是建立一颗二叉树,对于每个节点,其左儿子小于它,右儿子大于它. 逐点插入的话,一开始以50作为根,接下来依次插入. 比如72比50大,作为50的右儿子. 43比50小,作为50的左儿子. 85比50大,但是这时50已经有右儿子75了,所以85与75比较,85比75大,作为75的右儿子. 同理,这样就可以把二叉树建出来了. 而查找30时,因为30比50小,所以往左边走.然后以此类推.... 如果还有不明白的可以问我:328880142 加油~
@佟玉2757:如何画二叉树 -
乌燕13191314035…… 从root node开始如果数值比current node小就往左下走, 大就往右下走, 直到无路可走, 如果还小就在左边加个含有当前数值的node, 大就右边加一个
@佟玉2757:画出5个结点的所有二叉树 -
乌燕13191314035…… #include<stdio.h>#include<stdlib.h> typedef char datatype; typedef struct node{ datatype data; struct node *l; struct node *r; } tree,*bitree; void createbitree(bitree *t) { char ch; ch=getchar( ); if (ch==' ')*t = NULL; else {if(!(*t=(tree*)malloc(sizeof(bitree...
@佟玉2757:二叉树的画法 -
乌燕13191314035…… 二叉树的结构有顺序存储和链式存储两种存储结构,其中顺序存储是通过数组实现的,从上到下,从左到右的顺序依次存放根、左孩子、右孩子;链式存储是通过指针实现的,一个结点有三个域:左指针、数据域、右指针.
乌燕13191314035…… 二叉树的画法可以分为: 1、确定根节点 2、确定该节点的左儿子与右儿子 3、递归下去,直到所有节点都不再有儿子节点 根据二叉树具体的存储结构,确定根及儿子节点的方法也不一样 从你这图来看,A-G是按层遍历的,既自顶至下,自左至右的顺序遍历 如果是用数组来存,可以表示为 索引 0 1 2 3 4 5 6 7 8 节点 A B C D 空 E F 空 G 其中第一个节点即为根节点 索引号为i的节点的: 左儿子索引号2i+1 右儿子索引号为2i+2 从根节点开始递归下去,就可以画出整个树;饿 如果是链表存储,其物理地址与逻辑地址就没有直接联系了,只能靠节点之间的逻辑来推了
@佟玉2757:知道二叉树先序,中序,后序其中的两个顺序列,如何画出二叉树 -
乌燕13191314035…… (1)由先序遍历序列和后序遍历序列不能唯一确定一棵二叉树. (2)由先序遍历序列和中序遍历序列能够唯一确定一棵二叉树. 设先序序列为:a1,a2,……,an , 中序序列为:ap1,…,api, a1, …,apn .则a1为根结点;ap1,…,api为左子树的中序序...
@佟玉2757:四个结点可以构成( )种不同形状的二叉树.那N个节点呢?大家能告诉我什么公式、或者方法? - 作业帮
乌燕13191314035…… [答案] 设n个节点的二叉树有f(n)种 N个节点,其中1个为根节点,则剩下有n-1个节点,这n-1个节点可以: 0个作为根节点的左子树(1种方法),n-1个节点作为根节点的右子树(f(n-1)种方法) 1个节点作为左子树(1种方法),n-2个节点作为右子树(f...
@佟玉2757:知道二叉树遍历怎样画出二叉树 -
乌燕13191314035…… 先序你要记住是 根-左-右的顺序,而中序是 左-根-右.对于知道先和中序的情况,首先根据先序可以确定第一个是根结点.然后看这个二叉树是否有右子树,如果有,那么对于中序来说,根结点后面肯定还有结点,且中序中根节点后第一个结点...
@佟玉2757:数据结构问题 由4个节点可以构造出多少种不同的二叉树? -
乌燕13191314035…… 看了你上面的理解,你可能认为1节点和2、3、4节点不同,其实4个节点是相同的.例如: 1 2 \ \ 3 4 \ \ 2 1 \ \ 4 3 这两个是相同的,因为节点是相同的!所以你上面的理解有重复出现的情况,所以才会多!
@佟玉2757:利用逐点插入法建立二叉树 -
乌燕13191314035…… 二叉树排序目标就是建立一颗二叉树,对于每个节点,其左儿子小于它,右儿子大于它. 逐点插入的话,一开始以50作为根,接下来依次插入. 比如72比50大,作为50的右儿子. 43比50小,作为50的左儿子. 85比50大,但是这时50已经有右儿子75了,所以85与75比较,85比75大,作为75的右儿子. 同理,这样就可以把二叉树建出来了. 而查找30时,因为30比50小,所以往左边走.然后以此类推.... 如果还有不明白的可以问我:328880142 加油~
@佟玉2757:如何画二叉树 -
乌燕13191314035…… 从root node开始如果数值比current node小就往左下走, 大就往右下走, 直到无路可走, 如果还小就在左边加个含有当前数值的node, 大就右边加一个
@佟玉2757:画出5个结点的所有二叉树 -
乌燕13191314035…… #include<stdio.h>#include<stdlib.h> typedef char datatype; typedef struct node{ datatype data; struct node *l; struct node *r; } tree,*bitree; void createbitree(bitree *t) { char ch; ch=getchar( ); if (ch==' ')*t = NULL; else {if(!(*t=(tree*)malloc(sizeof(bitree...
@佟玉2757:二叉树的画法 -
乌燕13191314035…… 二叉树的结构有顺序存储和链式存储两种存储结构,其中顺序存储是通过数组实现的,从上到下,从左到右的顺序依次存放根、左孩子、右孩子;链式存储是通过指针实现的,一个结点有三个域:左指针、数据域、右指针.