-
二叉树的遍历查看全部
-
二叉树遍历
查看全部 -
C语言代码 , 自己去调一下格式 美化地址http://web.chacuo.net/formatc
#include<stdio.h>#define Max 1000typedef struct tr{ int node[Max]; int size;}tree;bool CreatTree(int size,tree *t){ if(size<=0||size>Max) return false; t->size=size; for(int i=0;i<size;i++) scanf("%d",&t->node[i]); return true;}void Destroy(tree *t){ ;}int *SearchNode(int nodeIndex,tree *t){ if(nodeIndex<0||nodeIndex>=t->size) return NULL; if(t->node[nodeIndex]==0) return NULL; return &t->node[nodeIndex];}bool AddNode(int nodeIndex,int derection,int node,tree *t){ if(nodeIndex<0||nodeIndex>=t->size) return false;/* if(t->node[nodeIndex]!=0) return false;*/ if(nodeIndex*2+derection>=t->size) return false; t->node[nodeIndex*2+derection]=node; return true;}bool DeleteNode(int nodeIndex,tree *t){ if(nodeIndex<0||nodeIndex>=t->size) return false; if(t->node[nodeIndex]==0) return false; t->node[nodeIndex]=0; return true; }void TreeTraverse(tree *t){ for(int i=0;i<t->size;i++) { printf("%d ",t->node[i]); } printf("\n");}int main(){ //数组下标从0开始使用,所以存在物理位置和逻辑位置的转换 tree t; int size; scanf("%d",&size); CreatTree(size,&t); int nodeIndex; scanf("%d",&nodeIndex);//操作结点 int *p=SearchNode(--nodeIndex,&t); printf("查找结果:%d\n",*p); int node; int derection; scanf("%d %d %d",&nodeIndex,&derection,&node); AddNode(--nodeIndex,derection,node,&t);//插入nodeIndex的左儿子(derection==1)结点或者右儿子(derection==2)结点 TreeTraverse(&t); scanf("%d",&nodeIndex); DeleteNode(--nodeIndex,&t); TreeTraverse(&t); return 0;}
查看全部 -
度的概念。 二叉树概念。查看全部
-
构造函数 析构函数查看全部
-
二叉树链式实现中的函数查看全部
-
树的头文件查看全部
-
二叉树中的节点的度不是2就是1不然就是0查看全部
-
多颗独立的树放在一起就是森林查看全部
-
第一层节点的深度为一 第二层节点的深度为二 以此类推 一棵树的深度就是最大的节点深度查看全部
-
终端节点就是叶子节点 叶子节点的度为零查看全部
-
删除失败:1.没添加好 添加结点时,不仅要给要添加的位置添加左或右结点,也要指定被添加结点的父结点,不然可能会找不到该结点 2.搜索不到结点,递归调用继续往下搜索查看全部
-
访问左右结点-->递归-->访问左右子树查看全部
-
不能直接把pNode挂载到树中,要先将其数据拷贝出来, pNode作为一个外边传过来的数据,如果被外边的函数或者其他语句修改,那么它的完整性就不存在了,对于树来说影响很大,往往会造成致命错误查看全部
-
二叉树的遍历:前序,中序,后序查看全部
举报
0/150
提交
取消