-
二叉樹的遍歷查看全部
-
二叉樹遍歷
查看全部 -
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
提交
取消