void InOrderTraverse(BinaryTree * binaryTree,void(*visit)()){
	if(binaryTree){
		InOrderTraverse(binaryTree->lChild,visit);
		visit(Value(binaryTree,Root(binaryTree)));
		InOrderTraverse(binaryTree->rChild,visit);
	}
}
Exemple #2
0
/*中序序遍历,采用递归*/
void InOrderTraverse(BiTree T,void (visit)(BiTree)){
	if(T){
	    InOrderTraverse(T->lchild,visit);
		visit(T);
		InOrderTraverse(T->rchild,visit);
	}
}
Exemple #3
0
//中序遍历二叉排序的递归实现
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
Exemple #8
0
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);
}
Exemple #10
0
void InOrderTraverse(SearchTree T)	//	前序遍历
{
	if(T)
	{
		printf("%d ", T->data);
		InOrderTraverse(T->Left);
		InOrderTraverse(T->Right);
	}
}
Exemple #11
0
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); /* 最后中序遍历右子树 */
   }
 }
Exemple #13
0
/* 二叉树的中序遍历递归算法 */
void InOrderTraverse(BiTree T)
{
    if (T == NULL)
        return;

    InOrderTraverse(T->lchild); // 递归遍历该结点的左子树
    printf("%c", T->data); // 输出该结点的数据
    InOrderTraverse(T->rchild); // 递归遍历该结点的右子树
}
Exemple #14
0
//�������������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;
}
Exemple #15
0
 void InOrderTraverse(BiTree T,Status(*Visit)(TElemType))
 { // 初始条件: 二叉树T存在,Visit是对结点操作的应用函数
   // 操作结果: 中序递归遍历T,对每个结点调用函数Visit一次且仅一次
   if(T)
   {
     InOrderTraverse(T->lchild,Visit); // 先中序遍历左子树
     Visit(T->data); // 再访问根结点
     InOrderTraverse(T->rchild,Visit); // 最后中序遍历右子树
   }
 }
Exemple #16
0
/* 操作结果: 中序递归遍历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;
}
Exemple #18
0
void InOrderTraverse(BiTree T)
{
   if(T)
   {
      InOrderTraverse(T->lchild);
      printf("%c ",T->data);
      free(T);
      InOrderTraverse(T->rchild);
   }
}
Exemple #19
0
//中序遍历
Status InOrderTraverse(BiTree T)
{
	if(T)
	{
		InOrderTraverse(T->lchild);
		printf("%c",T->data);
		InOrderTraverse(T->rchild);
	}
	return OK;
}
Exemple #20
0
 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;
}
Exemple #22
0
void InOrderTraverse(BiTree T)
{

	BiTree p = NULL;
	p = T;
	if (p != NULL) {
		InOrderTraverse(p->lchild);
		printf("%4c",p->data);
		InOrderTraverse(p->rchild);
	}
}
Exemple #23
0
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
Exemple #25
0
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;
}
Exemple #28
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;
}
Exemple #30
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");
}