二叉树的遍历(递归)

原创 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;
}

二叉树的三种遍历方式:递归、栈、循环

三种方法中,递归最为简单,栈次之,循环最为麻烦。递归的深度如果太大则会导致栈溢出;栈的方式需要额外的辅助空间;循环编程最麻烦。           首先是递归: //递归方法 void midPri...
  • Walker19900515
  • Walker19900515
  • 2015年06月21日 09:47
  • 1815

二叉树遍历的递归实现图解

http://jsj.ccut.edu.cn/sjjgweb/index.php?option=com_content&task=view&id=685 二叉树的遍历是二叉树各种操作的基础,所以...
  • YEYUANGEN
  • YEYUANGEN
  • 2011年12月14日 10:40
  • 2476

二叉树遍历(递归)

二叉树又称为红黑树,是一种常用的数据结构,而二叉树的遍历则是一种非常基本的操作。遍历二叉树的方式有两大类:递归和非递归。递归方式算法较为简便,并且更便于理解,非递归方式则需要对二叉树的遍历次序有较为深...
  • qq1013598664
  • qq1013598664
  • 2016年09月03日 17:04
  • 203

二叉树的遍历(递归)

1058: 二叉树遍历 时间限制: 1 Sec  内存限制: 128 MB 提交: 18  解决: 8 [提交][状态][讨论版] 题目描述 对于二叉树T,可以有先序遍历、中序遍历和后序...
  • Cui_csdn
  • Cui_csdn
  • 2017年09月05日 11:53
  • 104

二叉树的遍历(递归)

#include #include #include   typedef int datatype; typedef struct _bitree_node_ {     datat...
  • tomcmd
  • tomcmd
  • 2015年08月10日 22:20
  • 230

二叉树的遍历(递归与非递归)

背景 2013-10-7 修订部分内容 2014-5-24 修改后序非递归部分代码 本文讨论二叉树的常见遍历方式的代码(Java)实现,包括前序(preorder)、中序(inord...
  • qq991029781
  • qq991029781
  • 2014年07月18日 08:58
  • 353

二叉树的四种遍历的递归和非递归的实现

二叉树的三种遍历为:前序遍历,中序遍历和后序遍历。 遍历的实现可分为递归和非递归。递归法与二叉树的定义相似,非递归法采用栈去模拟实现。 一、前序遍历的次序为:根结点——左结点——右结点。 递归法实现:...
  • xiaominkong123
  • xiaominkong123
  • 2016年06月02日 16:50
  • 466

通过二叉树的遍历理解递归

通过前序遍历加深对于递归的理解
  • sinat_27088253
  • sinat_27088253
  • 2016年07月19日 11:37
  • 1806

二叉树遍历的所有递归和迭代实现

@[二叉树|排列|前序|中序|后序]无论是在面试过程中还是实际项目中,我们都会遇见二叉树的遍历,当然这个只要了解了原理,其实很简单;二叉树的排列包括(注意顺序) * 前序排列:先遍历树的跟节点,然后...
  • u010388497
  • u010388497
  • 2016年06月16日 02:33
  • 1328

二叉树遍历的递归、非递归算法(Java实现)

二叉树先序遍历、中序遍历、后序遍历的递归以及非递归算法(Java实现)
  • apandi_
  • apandi_
  • 2016年10月24日 22:35
  • 1852
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二叉树的遍历(递归)
举报原因:
原因补充:

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