二叉树,495个c语言问题,删除问题

当前位置: >
> 怎么删除二叉树的结点啊如图,若删除的是叶子节点d、e和f,直接将这些节点的父节点的指针域置NULL
怎么删除二叉树的结点啊如图,若删除的是叶子节点d、e和f,直接将这些节点的父节点的指针域置NULL
t7thlve & at
怎么删除二叉树的结点啊
如图,若删除的是叶子节点d、e和f,直接将这些节点的父节点的指针域置NULL即可;但是如果要删除节点b的话,节点b有左右孩子节点,那么节点d和e怎么排序啊&&求思路&谢谢
如果是二叉排序树的话,那就是d取代b的位置,e变成d的右子节点吧t & &
& & (0)(0)引用:  不太明白
要么把它下面的所有结点和它一起删除,要么从它下面找出一个结点来代替它
至于选哪个,以及用什么标准来找代替它的结点,就要看你具体想做什么了t8s92005 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-c语言二叉树创建问题_百度知道
c语言二叉树创建问题
各位大哥大姐们,快看看我写的创建二叉树这段代码对不对呀?!typedefine struct bnode {
struct bnode *lchirld,* }void create(node *t) { scanf(&%d&,&a); if(a==100) t=NULL;else { t= t-&data=a; create(t-&lchirld);
create(t-&rchirld);} }上面就是程序的程
呵呵…这位仁兄,怎么答案没有下文了呀?
提问者采纳
你貌似没搞明白 指针 和 二级指针的概念。。。你的代码我该了一下。你看看。//输入示例: ab..c.d..#include&stdio.h&#include&malloc.h&#define DataType charint LeafCount=0;
//统计叶子节点的数目typedef struct Node
//定义一个二叉树节点类型
struct Node *LC
struct Node *RC
}BiTNode,*BiT//这在里单是BiTree bt
传指针是不对的,因为你在CreateBiTree 函数中更改了 bt 的指向,此刻的bt 和 传进来的 root 就没有联系了。。。所以建立的根本就不是二叉树。。你再想想看。。。void CreateBiTree(BiTree *bt)
//创建一个二叉树 {
ch=getchar();
printf(另外,虚机团上产品团购,超级便宜
其他类似问题
按默认排序
其他2条回答
你貌似没搞明白 指针 和 二级指针的概念。。。你的代码我该了一下。你看看。//输入示例: ab..c.d..#include&stdio.h&#include&malloc.h&#define DataType charint LeafCount=0;
//统计叶子节点的数目typedef struct Node
//定义一个二叉树节点类型
struct Node *LC
struct Node *RC
}BiTNode,*BiT//这在里单是BiTree bt
传指针是不对的,因为你在CreateBiTree 函数中更改了 bt 的指向,此刻的bt 和 传进来的 root 就没有联系了。。。所以建立的根本就不是二叉树。。你再想想看。。。void CreateBiTree(BiTree *bt)
//创建一个二叉树 {
ch=getchar();
typedefine struct bnode { }这里有问题,定义完一个结构体时,后面一定要紧跟“;”分号还有变量a没有定义,变量、函数、结构体等都必需先定义后使用。不好意思,输入内容有限,只能回答这么多了
二叉树的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁二叉树删除或插入输入的某个节点,c语言编程,该怎么写?求高手相助!_百度知道
二叉树删除或插入输入的某个节点,c语言编程,该怎么写?求高手相助!
提问者采纳
二叉树函数大全#include &stdio.h&typedef struct treenode *typedef struct treenode *searchtree makeempty(searchtree t );清空position find(int x ,searchtree t);position findmin(searchtree t);position findmax(searchtree t);searchtree insert(int x,searchtree t );searchtree delete(int x,searchtree
t);int retrieve(position p);struct treenode{struct treenode *struct treenode *};searchtree makeempty(searchtree
t)清空{if(t!=NULL){makeempty(t-&left);makeempty(t-&right);free(t);}return NULL;}position find(int x,searchtree t)查找{if(t==NULL)return NULL;if(x&t-&element)return find(x,t-&left);else if(x&t-&element)return find(x,t-&right);else}position findmin(searchtree t)找最小{if(t==NULL)return NULL;else if(t-&left==NULL)else return findmin(t-&left);}position findmax(searchtree t)找最大{if(t!=NULL)while(t-&right!=NULL)t=t-&}searchtree insert(int x,searchtree t)插入函数{if(t==NULL){t=malloc(sizeof(struct treenode));if(t==NULL){printf(&nottt&); exit(-1);}elset-&element=x;t-&left=t-&right=NULL;}else if(x&t-&element)t-&right=insert(x,t-&right);else if(x&t-&element)t-&left=insert(x,t-&left);}searchtree delete(int x,searchtree t)删除函数{if(t==NULL){printf(&cuo wu&);exit(0);}if(x&t-&element)t-&right=delete(x,t-&right);else if(x&t-&element)t-&left=delete(x,t-&left);else if(t-&left&&t-&right){kkk=findmin(t-&right);t-&element=kkk-&delete(t-&element,t-&right);}else{kkk=t;if(t-&left==NULL)t=t-&else if(t-&right==NULL)t=t-&free(kkk);}} position print(searchtree t)/*就是这个递归函数在排序输出时同时删除一样的结点*/{if(t-&left!=NULL)print(t-&left);printf(&%d&,t-&element);if(t-&left==t-&element) delete(t-&left-&element,h);if(t-&right==t-&element)delete(t-&right-&element,h);/*这个就是删除函数*/if(t-&right!=NULL)print(t-&right);}void main(){}
其他类似问题
c语言编程的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
第6章 树和二叉树
数据结构课件C语言描述.ppt142页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:60 &&
你可能关注的文档:
··········
··········
3. 二叉树还原为树或森林
树和森林都可以转换为二叉树,二者的不同是: 树转换成的二叉树, 其根结点必然无右孩子,而森林转换后的二叉树,其根结点有右孩子。将一棵二叉树还原为树或森林,具体方法如下:
(1) 若某结点是其双亲的左孩子,则把该结点的右孩子、 右孩子的右孩子……都与该结点的双亲结点用线连起来。
(2) 删掉原二叉树中所有双亲结点与右孩子结点的连线。
(3) 整理由(1)、(2)两步所得到的树或森林, 使之结构层次分明。
二叉树到森林的转换示例
同样,我们可以用递归的方法描述上述转换过程。
若B是一棵二叉树,T是B的根结点,L是B的左子树,R为B的右子树,且B对应的森林F(B)中含有的n棵树为T1, T2,
…, Tn, 则有:
(1) B为空,则F(B)为空的森林(n=0)。
(2) B非空,则F(B)中第一棵树T1的根为二叉树B的根T;T1中根结点的子树森林由B的左子树L转换而成,即F(L)
T11, …, T1m ;B的右子树R转换为F(B)中其余树组成的森林, 即F R = T2,
根据这个递归的定义, 我们同样可以写出递归的转换算法。
树与森林的遍历
1. 树的遍历
树的遍历方法主要有以下两种:
1) 先根遍历
若树非空,则遍历方法为:
访问根结点。
从左到右, 依次先根遍历根结点的每一棵子树。
例如, 图6.21中树的先根遍历序列为ABECFHGD。
2) 后根遍历
若树非空, 则遍历方法为:
(1) 从左到右, 依次后根遍历根结点的每一棵子树。
(2) 访问根结点。
例如, 图6.21中树的后根遍历序列为EBHFGCDA。
2. 森林的遍历
森林的遍历方法
正在加载中,请稍后...

我要回帖

更多关于 495个c语言问题 的文章

 

随机推荐