void InOrderTraverse(BinaryTree * binaryTree,void(*visit)()){ if(binaryTree){ InOrderTraverse(binaryTree->lChild,visit); visit(Value(binaryTree,Root(binaryTree))); InOrderTraverse(binaryTree->rChild,visit); } }
/*中序序遍历,采用递归*/ void InOrderTraverse(BiTree T,void (visit)(BiTree)){ if(T){ InOrderTraverse(T->lchild,visit); visit(T); InOrderTraverse(T->rchild,visit); } }
//中序遍历二叉排序的递归实现 void InOrderTraverse(BiTree T){ if(T) /*如果二叉排序树不为空*/ { InOrderTraverse(T->lchild); /*中序遍历左子树*/ printf("%4d",T->data); /*访问根结点*/ InOrderTraverse(T->rchild); /*中序遍历右子树*/ } }
void InOrderTraverse(BiTree T) { if (T == NULL) return; InOrderTraverse(T->lchild); printf("%d\n", T->data); InOrderTraverse(T->rchild); }
void InOrderTraverse(BiTree T, void (*Visit)(TElemType)) { if (T) { InOrderTraverse(T->lchild, Visit); Visit(T->data); InOrderTraverse(T->rchild, Visit); } }
void InOrderTraverse(Tree root) { if (root == NULL) return; InOrderTraverse(root->lchild); Visit(root); InOrderTraverse(root->rchild); }
Status InOrderTraverse( BiTree T, Status(*Visit)(ElemType) ) //中序遍历二叉树 { if(T==NULL) return 0; InOrderTraverse(T->lchild,Visit); Visit(T->data); InOrderTraverse(T->rchild,Visit); return 1; } // InOrderTraverse
void InOrderTraverse(BitTree t){ if(!t) return; InOrderTraverse(t->lchild); printf("%c",t->data); InOrderTraverse(t->rchild); }
/// 中序遍历 void InOrderTraverse(TreeNode* root) { if(root == NULL) return; InOrderTraverse(root->left); /// Visit(root); InOrderTraverse(root->right); }
void InOrderTraverse(SearchTree T) // 前序遍历 { if(T) { printf("%d ", T->data); InOrderTraverse(T->Left); InOrderTraverse(T->Right); } }
void InOrderTraverse(BiThrTree btt) { if(btt) { InOrderTraverse(btt->lchild); printf("%c",btt->data); InOrderTraverse(btt->rchild); } }
void InOrderTraverse(BiPTree T,Status(*Visit)(BiPTree)) { /* 中序递归遍历二叉树T */ if(T) { InOrderTraverse(T->lchild,Visit); /* 中序遍历左子树 */ Visit(T); /* 再访问根结点 */ InOrderTraverse(T->rchild,Visit); /* 最后中序遍历右子树 */ } }
/* 二叉树的中序遍历递归算法 */ void InOrderTraverse(BiTree T) { if (T == NULL) return; InOrderTraverse(T->lchild); // 递归遍历该结点的左子树 printf("%c", T->data); // 输出该结点的数据 InOrderTraverse(T->rchild); // 递归遍历该结点的右子树 }
//�������������T int BiSearchT::InOrderTraverse(BiTree t,int (*Visit)(int d)) { if(t){ if(InOrderTraverse(t->l,Visit)) if(Visit(t->data)) if(InOrderTraverse(t->r,Visit)) return 1; return 0; }else return 1; }
void InOrderTraverse(BiTree T,Status(*Visit)(TElemType)) { // 初始条件: 二叉树T存在,Visit是对结点操作的应用函数 // 操作结果: 中序递归遍历T,对每个结点调用函数Visit一次且仅一次 if(T) { InOrderTraverse(T->lchild,Visit); // 先中序遍历左子树 Visit(T->data); // 再访问根结点 InOrderTraverse(T->rchild,Visit); // 最后中序遍历右子树 } }
/* 操作结果: 中序递归遍历T,对每个结点调用函数Visit一次且仅一次 */ void InOrderTraverse(BiTree T, Status(* Visit)(TElemType)) { if (T) { if (T->lchild) InOrderTraverse(T->lchild, Visit); Visit(T->data); if (T->rchild) InOrderTraverse(T->rchild, Visit); } }
//中序递归遍历 int InOrderTraverse(BiTree T) { if(T!=NULL) { InOrderTraverse(T->lchild); printf("%c",T->data); InOrderTraverse(T->rchild); } return true; }
void InOrderTraverse(BiTree T) { if(T) { InOrderTraverse(T->lchild); printf("%c ",T->data); free(T); InOrderTraverse(T->rchild); } }
//中序遍历 Status InOrderTraverse(BiTree T) { if(T) { InOrderTraverse(T->lchild); printf("%c",T->data); InOrderTraverse(T->rchild); } return OK; }
void InOrderTraverse(BiTree T,Status(*Visit)(TElemType)) { /* 初始条件: 二叉树T存在,Visit是对结点操作的应用函数 */ /* 操作结果: 中序递归遍历T,对每个结点调用函数Visit一次且仅一次 */ if(T) { InOrderTraverse(T->lchild,Visit); /* 先中序遍历左子树 */ Visit(T->data); /* 再访问根结点 */ InOrderTraverse(T->rchild,Visit); /* 最后中序遍历右子树 */ } }
Status InOrderTraverse(BiTree T,Status (* visit)(TElemType e)) { //递归中序遍历 if(T) { InOrderTraverse(T->lchild,visit); visit(T->data); InOrderTraverse(T->rchild,visit); } return OK; }
void InOrderTraverse(BiTree T) { BiTree p = NULL; p = T; if (p != NULL) { InOrderTraverse(p->lchild); printf("%4c",p->data); InOrderTraverse(p->rchild); } }
status InOrderTraverse(Node* T) //中序遍历 { if(T == NULL) { return TRUE; } InOrderTraverse(T->lChild); printf("%d ",T->data); InOrderTraverse(T->rChild); return TRUE; }
Status InOrderTraverse( BiTree T ) { // 中序遍历二叉树T的递归算法,对每个数据元素调用函数Visit。 //补全代码,可用多个语句 if(T) { if(InOrderTraverse(T->lchild)) if(PrintElement(T->data)) if(InOrderTraverse(T->rchild)) return OK; return ERROR; }else return OK; } // InOrderTraverse
int main() { BiTree root=NULL; printf("Create BiTree..\n"); CreateBiTree(&root); printf("\nDone!!!!\n"); printf("PreOrderTraverse..\n"); PreOrderTraverse( root); printf("\n"); PreOrderTraverse_1( root); printf("\nDone!!!!\n"); printf("InOrderTraveerse..\n"); InOrderTraverse(root); printf("\n"); InOrderTraverse_1(root); printf("\nDone!!!!\n"); printf("PostOrderTravaerse..\n"); PostOrderTraverse(root); printf("\n"); PostOrderTraverse_1(root); printf("\nDone\n"); BiTree_free(&root); return 0; }
int main() //主函数 { BiTree T=NULL; int i,n,e; //生成二叉排序树T scanf("%d",&i); while(i!=-1) { e=i; InsertBiTree(T,e); scanf("%d",&i); } //前、中、后序遍历二叉树 PreOrderTraverse(T,PrintElement); printf("\n"); InOrderTraverse(T,PrintElement); printf("\n"); PostOrderTraverse(T,PrintElement); printf("\n"); //计数并输出 printf("%d\n", TreeCount(T)); return 0;//补充代码 }//main
int main(int argc, char const *argv[]) { Tree T; int Postorder[] = {4, 7, 9, 12, 10, 8}; int Inorder[] = {4, 7, 8, 9, 10, 12}; // T = CreateTree(); // PreOrderTraverse(T); // printf("\n"); // InOrderTraverse(T); // printf("\n"); // PostOrderTraverse(T); // printf("\n"); T = buildTree(Inorder, sizeof(Inorder) / sizeof(Inorder[0]), Postorder, sizeof(Postorder) / sizeof(Postorder[0])); PreOrderTraverse(T); printf("\n"); InOrderTraverse(T); printf("\n"); PostOrderTraverse(T); printf("\n"); return 0; }
int main(int argc, char const *argv[]) { //int err; struct Tree *T; char *ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; T = CreateTree(ch); printf("递归先序遍历\n"); PreOrderTraverse(T); printf("\n"); printf("递归中序遍历\n"); InOrderTraverse(T); printf("\n"); printf("递归后序遍历\n"); PostOrderTraverse(T); printf("\n"); printf("非递归先序遍历\n"); PreOrderTraverseStack(T); printf("\n"); printf("非递归中序遍历\n"); InOrderTraverseStack(T); printf("\n"); printf("非递归后序遍历\n"); PostOrderTraverseStack(T); printf("\n"); return 0; }
int main(int argc, char const *argv[]) { int i, Len; int* Array; Tree T; Len = 16; Array = malloc(sizeof(int) * Len); for (i = 0; i < Len; ++i) Array[i] = i; T = sortedArrayToBST(Array, Len); PreOrderTraverse(T); printf("\n"); InOrderTraverse(T); printf("\n"); PostOrderTraverse(T); printf("\n"); return 0; }
main() { BiTNode * n1 = MakeNode(10, NULL, NULL); BiTNode * n2 = MakeNode(20, NULL, NULL); BiTNode * n3 = MakeNode(30, n1, n2); BiTNode * n4 = MakeNode(40, NULL, NULL); BiTNode * n5 = MakeNode(50, NULL, NULL); BiTNode * n6 = MakeNode(60, n4, n5); BiTNode * n7 = MakeNode(70, NULL, NULL); BiTree tree = InitBiTree(n7); SetLChild(tree, n3); SetRChild(tree, n6); printf("树的深度为:%d \n", GetDepth(tree)); printTree(tree, GetDepth(tree)); printf("\n先序遍历如下:"); PreOrderTraverse(tree, print); printf("\n中序遍历如下:"); InOrderTraverse(tree, print); printf("\n后序遍历如下:"); PostOrderTraverse(tree, print); DeleteChild(tree, 1); printf("\n后序遍历如下:"); PostOrderTraverse(tree, print); DestroyBiTree(tree); if (IsEmpty(tree)) printf("\n二叉树为空,销毁完毕\n"); }