| 查看: 253 | 回复: 0 | ||
| 当前主题已经存档。 | ||
[资源]
【分享】二叉树算法
|
||
|
/* Binary tree traversal */ # include struct NODE { char Info; struct NODE *Left_Child; struct NODE *Right_Child; }; struct NODE *Binary_Tree (char *, int, int); void Output(struct NODE *, int ); void Pre_order(struct NODE *); void In_order(struct NODE *); void Post_order(struct NODE *); /* Function to create an binary tree */ struct NODE * Binary_Tree (char *List, int Lower, int Upper) { struct NODE *Node; int Mid = (Lower + Upper)/2; Node = (struct NODE*) malloc(sizeof(struct NODE)); Node->Info = List [Mid]; if ( Lower>= Upper) { Node->Left_Child = NULL; Node->Right_Child = NULL; return (Node); } if (Lower <= Mid - 1) Node->Left_Child = Binary_Tree (List, Lower, Mid - 1); else Node->Left_Child = NULL; if (Mid + 1 <= Upper) Node->Right_Child = Binary_Tree (List, Mid + 1, Upper); else Node->Right_Child = NULL; return(Node); } /* Output function */ void Output(struct NODE *T, int Level) { int i; if (T) { Output(T->Right_Child, Level+1); printf("\n" ;for (i = 0; i < Level; i++) printf(" " ;printf(" %c", T->Info); Output(T->Left_Child, Level+1); } } /* Pre-order traversal */ void Pre_order (struct NODE *Node) { if (Node) { printf(" %c", Node->Info); Pre_order(Node->Left_Child); Pre_order(Node->Right_Child); } } /* In-order traversal */ void In_order (struct NODE *Node) { if (Node) { In_order(Node->Left_Child); printf(" %c", Node->Info); In_order(Node->Right_Child); } } /* Post-order traversal */ void Post_order (struct NODE *Node) { if (Node) { Post_order(Node->Left_Child); Post_order(Node->Right_Child); printf(" %c", Node->Info); } } /* Function main */ void main() { char List[100]; int Number = 0; char Info; char choice; struct NODE *T = (struct NODE *) malloc(sizeof(struct NODE)); T = NULL; printf("\n Input choice 'b' to break:" ;choice = getchar(); fflush(stdin); while(choice != 'b') { printf("\n Input information of the node: " ;scanf("%c", &Info); List[Number++] = Info; fflush(stdin); printf("\n Input choice 'b' to break:" ;choice = getchar(); fflush(stdin); } Number --; printf("\n Number of elements in the list is %d", Number); T = Binary_Tree(List, 0, Number); Output(T,1); printf("\n Pre-order traversal\n" ;Pre_order (T); printf("\n In-order traversal\n" ;In_order (T); printf("\n Post-order traversal\n" ;Post_order (T); } 七、测试数据 1 2 3 4 5 6 7 八、测试情况 [search]二叉树[/search] [ Last edited by bslt on 2009-9-4 at 21:54 ] |
» 猜你喜欢
纳米粒子粒径的测量
已经有5人回复
国自然申请面上模板最新2026版出了吗?
已经有6人回复
推荐一本书
已经有8人回复
溴的反应液脱色
已经有4人回复
参与限项
已经有5人回复
有没有人能给点建议
已经有5人回复
假如你的研究生提出不合理要求
已经有12人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复












;
回复此楼