二叉树的遍历(递归)

原创 2016年05月30日 20:17:38

#include <iostream>
#include<stdlib.h>
using namespace std;

typedef struct BiTNode
{
    char data;
     BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int CreateBiTree(BiTree &T)
{
    char data;
    cin>>data;
    if(data=='#')
    {
        T=NULL;
    }
    else
    {T=(BiTree)malloc(sizeof(BiTNode));
        T->data=data;
    CreateBiTree(T->lchild);
    CreateBiTree(T->rchild);
    }
return 0;
}
//输出
void Visit(BiTree T)
{
    if(T->data!='#')
    {
        cout<<T->data<<" ";
    }
}
//先序遍历二叉树
void PreTraverse(BiTree T)
{
    if(T!=NULL)
        {
            Visit(T);
    PreTraverse(T->lchild);
    PreTraverse(T->rchild);
        }
}
//中序遍历
void InTraverse(BiTree T)
{
    if(T!=NULL)
    {
        InTraverse(T->lchild);
        Visit(T);
        InTraverse(T->rchild);
    }
}
//后序遍历
void PostTraverse(BiTree T)
{
    if(T!=NULL)
    {
        PostTraverse(T->lchild);
        PostTraverse(T->rchild);
        Visit(T);
    }
}
int main()
{
    BiTree T;
    CreateBiTree(T);
    PreTraverse(T);
    cout<<endl;
    InTraverse(T);
    cout<<endl;
    PostTraverse(T);
    system("pause");
 /*ABCDEFG
   CBEGDFA
   CGEFDBA*/
        return 0;
}

相关文章推荐

二叉树的非递归遍历

  • 2014年11月04日 12:39
  • 3KB
  • 下载

二叉树的非递归遍历

  • 2012年10月20日 18:08
  • 344KB
  • 下载

二叉树的前中后序非递归遍历算法实现

二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。...

二叉树递归遍历

  • 2013年11月27日 16:56
  • 1KB
  • 下载

二叉树按层次遍历的递归用法

对于在学数据结构的大家,在编写二叉树的按层次遍历时往往会用非递归的方法,或许有人会问可不可以用递归来做呢? 对此,小编的答案是可以的。 相对于非递归,递归稍微要复杂些(这是由于二叉树中递归左子树递归右...

二叉树非递归遍历

  • 2013年03月09日 13:50
  • 38KB
  • 下载

二叉树非递归遍历

  • 2013年01月13日 16:21
  • 3KB
  • 下载

java非递归实现二叉树的遍历

1、中序非递归遍历思想   初始化栈,根节点入栈   若栈非空,则栈顶节点的左孩子依次进栈。直到null,则   访问栈顶节点,使栈顶节点出栈。若栈顶节点右孩子非空,则使右孩子进栈成为栈顶节点。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树的遍历(递归)
举报原因:
原因补充:

(最多只允许输入30个字)