/*主函数*/ int main() { int n; int data; int key; BinaryTree btree = NULL; BinaryTree f = NULL, p = NULL; scanf("%d", &n); //btree = (BinaryTree)malloc(sizeof(BinaryTree)*n); for (int i = 1; i <= n; i++) { scanf("%d", &data); InsertBST(btree, data); } preOrder(btree, printNode);//前序遍历递归实现 printf("\n"); InOrder(btree, printNode);//中序遍历递归实现 printf("\n"); PostOrder(btree, printNode);//后序遍历递归实现 printf("\n"); scanf("%d", &key); printf("%d\n", SearchBST(btree, key, f, p));//查找操作 scanf("%d", &key); printf("%d\n", SearchBST(btree, key, f, p));//查找操作 scanf("%d", &data); InsertBST(btree, data); preOrder(btree, printNode);//前序遍历递归实现 printf("\n"); InOrder(btree, printNode);//中序遍历递归实现 printf("\n"); PostOrder(btree, printNode);//后序遍历递归实现 printf("\n"); InOrderSecond(btree);//中序遍历非递归实现 LevelOrder(btree);//层次遍历 return 0; }
int main() { BTreeNode *bt; char *b; ElemtType x,*px; InitBTree(&bt); b = "c(a(d,e),b)"; CreateBTree(&bt, b); /* if (bt != NULL) { printf("%c", bt->data); } */ printf("preorder\n"); PreOrder(bt);printf("\n"); printf("inorder\n"); InOrder(bt);printf("\n"); printf("postorder\n"); PostOrder(bt);printf("\n"); printf("levelorder\n"); LevelOrder(bt);printf("\n"); printf("find one root\n"); scanf("%c",&x); px = FindBTree(bt, x); if (px) { printf("find it !: %c\n",*px); } else{ printf("not find it\n"); } printf("the depth of bt is \n"); printf("%d\n",BTreeDepth(bt)); ClearBTree(&bt); return 0; }
int main(){ struct BinaryTreeNode *root = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *second = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *third = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *fourth = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *fifth = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *sixth = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); struct BinaryTreeNode *seventh = (struct BinaryTreeNode *)malloc(sizeof(struct BinaryTreeNode)); root->data = 1; root->left = second; root->right = third; second->data = 2; second->left = fourth; second->right = fifth; third->data = 3; third->left = sixth; third->right = seventh; fourth->data = 4; fourth->left = fourth->right = NULL; fifth->data = 5; fifth->left = fifth->right = NULL; sixth->data = 6; sixth->left = sixth->right = NULL; seventh->data = 7; seventh->left = seventh->right = NULL; LevelOrder(root); return 1; }
void main() { BTNode *b; CreateBTNode(b,"A(B(D(,G)),C(E,F))"); printf("b:");DispBTNode(b);printf("\n"); printf("层次遍历序列:");LevelOrder(b);printf("\n"); }
void main(void) { // create a binary tree with root x BinaryTreeNode<int> x, y, z; x.data = 1; y.data = 2; z.data = 3; x.LeftChild = &y; x.RightChild = &z; y.LeftChild = y.RightChild = z.LeftChild = z.RightChild = 0; // traverse x in all ways cout << "Inorder sequence is "; InOrder(&x); cout << endl; cout << "Preorder sequence is "; PreOrder(&x); cout << endl; cout << "Postorder sequence is "; PostOrder(&x); cout << endl; cout << "Level order sequence is "; LevelOrder(&x); cout << endl; }
void Test1(){ int arr[] = {1,2,4,'#','#',7,'#','#',3,5,'#','#',6,'#',8}; Node_p root = CreateBinaryTree(arr,sizeof(arr)/sizeof(*arr),'#'); cout<<"前序遍历:"<<endl; PrevOrder(root); PrevOrderNonR(root); cout<<endl; cout<<"中序遍历:"<<endl; InOrder(root); InOrderNonR(root); cout<<endl; cout<<"后序遍历:"<<endl; PostOrder(root); PostOrderNonR(root); cout<<endl; cout<<"层序遍历:"<<endl; LevelOrder(root); cout<<endl; int depth = Depth(root); cout<<"该树的高度为:"<<depth<<endl; cout<<"该树共有"<<LeafNum(root)<<"个叶子节点"<<endl; for(int i=1; i<=depth; ++i){ cout<<"该树第"<<i<<"层有"<<GetKNode(root,i)<<"个节点"<<endl; } Node_p node1 = FindNode(root,4); Node_p node2 = FindNode(root,7); Node_p ancestor = GetCommonAncestor(root,node1,node2,1); cout<<node1->val<<"和"<<node2->val<<"的公共祖先为:"<<ancestor->val<<endl; node1 = FindNode(root,4); node2 = FindNode(root,5); ancestor = GetCommonAncestor(root,node1,node2,1); cout<<node1->val<<"和"<<node2->val<<"的公共祖先为:"<<ancestor->val<<endl; node1 = FindNode(root,5); node2 = FindNode(root,8); ancestor = GetCommonAncestor(root,node1,node2,1); cout<<node1->val<<"和"<<node2->val<<"的公共祖先为:"<<ancestor->val<<endl; }
void main() { BiTree t = NULL; //创建 //createBitree1(&t); t = createBitree2(); //先序 preOrder(t); printf("\n"); //树状打印 printTree(t,1); printf("\n"); //层次遍历 LevelOrder(t); printf("\n"); }
void MinHblt<T>::LevelOrder(void (*theVisit) (HbltNode<T> *)) { Visit_ = theVisit; LevelOrder(root_); }
void MinHblt<T>::LevelOrderOutput() { LevelOrder(Output); cout << endl; }
void main() { BiTree T; //定义一个指向BiTNode结点的指针 int choice; do{ printf("\n"); printf("请选择操作:\n"); printf("1.按照先序的次序生成一颗二叉树\n"); printf("2.递归算法实现二叉树的先序遍历,输出各结点值\n"); printf("3.用非递归算法实现二叉树的遍历,输出各结点值\n"); printf("4.求度分别为0、1、2的结点的数目(递归算法实现)\n"); printf("5.求度分别为0、1、2的结点的数目(非递归算法实现)\n"); printf("6.按层次遍历二叉树\n"); printf("7.求二叉树的高度(深度)\n"); printf("8.判断是否为完全二叉树,输出\"Yes!\"或\"No!\"\n"); printf("9.交换每个结点的左右子树,并用先序遍历的方式输出\n"); printf("10.对交换左右子树后的二叉树作中序遍历\n"); printf("11.保存到文件\n"); printf("12.从文件中读取并输出\n"); printf("13.退出\n"); scanf("%d",&choice); switch(choice){ case 1: CreateBiTree(&T); //创建二叉树 break; case 2: PreOrderTraverse(T); //利用递归算法的先序遍历,输出结点值 break; case 3: PreOrderTraverse2(T);//利用非递归算法的先序遍历,输出结点值 break; case 4: get_node(T); //利用递归算法得到的各个结点的个数 break; case 5: get_node_1(T); //利用非递归算法得到的各个结点的个数 break; case 6: LevelOrder(T); break; case 7: printf("二叉树的高度为%d\n",height(T)); break; case 8: if(judge(T)==0) printf("No!\n"); else printf("Yes!\n"); break; case 9: exchange(T); PreOrderTraverse(T); break; case 10: InorderTraverse(T); break; case 11: copy_TERM("d:\\aaa.dat",T); break; case 12: type("d:\\aaa.dat",T); break; } }while(choice!=13); }