zoukankan      html  css  js  c++  java
  • 二叉树的3种递归遍历

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    //二叉链表示法
    typedef struct BiTNode
    {
    	char data;
    	struct BiTNode *lchild,*rchild;
    }BiTNode,*BiTree;
    void preOrder(BiTNode *root)//先序遍历(先遍历根然后遍历左子树最后遍历右子树)
    {
    	if(root==NULL)
    	{
    		return ;
    	}
    	printf("%c ",root->data);
    	preOrder(root->lchild);//遍历左子树
    	preOrder(root->rchild);//遍历右子树
    }
    void inOrder(BiTNode *root)//中序遍历(先遍历左子树然后遍历根最后遍历右子树)
    {
    	if(root==NULL)
    	{
    		return ;
    	}
    	inOrder(root->lchild);//遍历左子树
    	printf("%c ",root->data);
    	inOrder(root->rchild);//遍历右子树
    }
    void postOrder(BiTNode *root)//后序遍历(先遍历左子树然后遍历右子树最后遍历根)
    {
    	if(root==NULL)
    	{
    		return ;
    	}
    	postOrder(root->lchild);//遍历左子树
    	postOrder(root->rchild);//遍历右子树
    	printf("%c ",root->data);
    }
    void main()
    {
    	//创建树的节点
    	BiTNode a={'A',NULL,NULL};
    	BiTNode b={'B',NULL,NULL};
    	BiTNode c={'C',NULL,NULL};
    	BiTNode d={'D',NULL,NULL};
    	BiTNode e={'E',NULL,NULL};
    	BiTNode f={'F',NULL,NULL};
    	BiTNode g={'G',NULL,NULL};
    	BiTNode h={'H',NULL,NULL};
    	BiTNode i={'I',NULL,NULL};
    	//建立关系
    	a.lchild=&b;
    	a.rchild=&e;
    	b.rchild=&c;
    	c.lchild=&d;
    	e.rchild=&f;
    	f.lchild=&g;
    	g.lchild=&h;
    	g.rchild=&i;
    	//树的遍历
    	printf("先序遍历:");
    	preOrder(&a);
    	printf("
    ");
    	printf("中序遍历:");
    	inOrder(&a);
    	printf("
    ");
    	printf("后序遍历:");
    	postOrder(&a);
    	printf("
    ");
    	system("pause");
    }
    

      

  • 相关阅读:
    云风版协程库源代码分析
    取消勾选use androidx.* artifacts
    Linux编程之信号
    Linux编程之错误代码
    git身份验证失败清除密码缓存
    实现可执行的so动态链接库
    同步以及异步connect
    STM32系列芯片命名规范
    QtAV的编译方法
    汇编文件后缀 .s 与 .S
  • 原文地址:https://www.cnblogs.com/jueshi0208/p/5546095.html
Copyright © 2011-2022 走看看