二叉树的遍历算法

二叉树的定义采用递归的方式,遍历方式也可以采用递归,而且极其简明。

//前序遍历 中左右void PreOrderTraverse(BiTree T)
{
     if(T==NULL)
          return;
    printf("%c",T->data);//先显示数据点
    PreOredeTraverse(T->lchild);//再先序遍历左子树
    PreOredeTraverse(T->rchild);//最后先序遍历右子树

}

  

//中序遍历 左中右
void InOrderTraverse(BiTree T)
{
     if(T==NULL)
          return;
    PreOredeTraverse(T->lchild);//先序遍历左子树
    printf("%c",T->data);//再显示数据点
    PreOredeTraverse(T->rchild);//最后先序遍历右子树

}

  

//后序遍历 左右中
void PostOrderTraverse(BiTree T)
{
     if(T==NULL)
          return;
    PreOredeTraverse(T->rchild);//先序遍历右子树
    PreOredeTraverse(T->lchild);//最后先序遍历左子树
    printf("%c",T->data);//再显示数据点
}

 两个二叉树遍历的性质:

1:已知前序遍历和中序遍历,可以唯一确定一棵树

2:已知后序遍历和中序遍历,可以唯一确定一棵树

时间: 2024-10-12 18:02:50

二叉树的遍历算法的相关文章

用java实现二叉树的遍历算法

用java实现二叉树的遍历算法用java实现二叉树的遍历算法,编写二叉树类BinaryTree代码如下:package package2; public class BinaryTree { int data; //根节点数据BinaryTree left; //左子树BinaryTree right; //右子树 public BinaryTree(int data) //实例化二叉树类{this.data = data;left = null;right = null;} public vo

二叉树常见遍历算法

这几天在复习关于树的各种算法,做了一些题,也搜索了网上各种算法,现在来总结一下树的各种常见算法.本文涵盖: 二叉树先中后序遍历(递归&非递归)算法 层次遍历(正序&逆序&锯齿形)非递归算法 二叉树深度算法 结点总数算法 1.二叉树先序非递归遍历 //先序非递归遍历 public ArrayList<Integer> preorderTraversal2(TreeNode root) { Stack<TreeNode> stack = new Stack<

毕业了-java二叉树层次遍历算法

/*************************************** * 时间:2017年6月23日 * author:lcy * 内容:二叉树的层次遍历 * 需要借助队列这个数据结构,直接import就可以了 * 1.首先将根节点放入队列中. 2.当队列为非空时,循环执行步骤3到步骤5,否则执行6: 3.出队列取得一个结点,访问该结点: 4.若该结点的左子树为非空,则将该结点的左子树入队列: 5.若该结点的右子树为非空,则将该结点的右子树入队列: 6.结束. ***********

毕业了-二叉树层次遍历算法-借助循环队列这个数据结构来实现,悟:数据结构是用来实现算法的

//代码进过测试,直接可以拿来用//关键就是那一点未透--队列.// 关键就是一个出队,一个入队操作.#include<iostream> #include<stdio.h> #include<stack> #include<queue> #include<malloc.h> # define MaxSize 100 using namespace std; //二叉树结点 typedef struct BTNode{ char data; st

java 二叉树递归遍历算法

//递归中序遍历 public void inorder() { System.out.print("binaryTree递归中序遍历:"); inorderTraverseRecursion(root); System.out.println(); } //层次遍历 public void layerorder() { System.out.print("binaryTree层次遍历:"); LinkedList<Node<Integer>>

二叉树 各种遍历算法

#include<iostream> #include<stack> #include<queue> using namespace std; //二叉树结点 typedef struct BiTNode{ //数据 char data; //左右孩子指针 struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //按先序序列创建二叉树 int CreateBiTree(BiTree &T){ char data; /

二叉树遍历算法——包含递归前、中、后序和层次,非递归前、中、后序和层次遍历共八种

首先,要感谢网上的参考资料. http://mengliao.blog.51cto.com/876134/1178079(作者:BlackAlpha) http://blog.csdn.net/fzh1900/article/details/14056735(作者:_云淡风轻) http://blog.csdn.net/stpeace/article/details/8138458(作者:stpeace) 二叉树是使用的比较广泛的一种数据结构,这里我写了二叉树的相关操作,包括初始化.新建.以及遍

数据结构第三部分:树与树的表示、二叉树及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树、集合及其运算

参考:浙大数据结构(陈越.何钦铭)课件 1.树与树的表示 什么是树? 客观世界中许多事物存在层次关系 人类社会家谱 社会组织结构 图书信息管理 分层次组织在管理上具有更高的效率! 数据管理的基本操作之一:查找(根据某个给定关键字K,从集合R 中找出关键字与K 相同的记录).一个自然的问题就是,如何实现有效率的查找? 静态查找:集合中记录是固定的,没有插入和删除操作,只有查找 动态查找:集合中记录是动态变化的,除查找,还可能发生插入和删除 静态查找——方法一:顺序查找(时间复杂度O(n)) int

第4章第1节练习题9 反向层次遍历算法

问题描述 试给出二叉树的自下而上,从右到左的层次遍历算法 算法思想 一般的二叉树层次遍历算法是自上向下,从左到右的遍历,这里的遍历顺序恰好相反,而运用栈先进后出的特点实现顺序的反转. 因此可以考虑在原来的层次遍历算法的基础上加上栈的基本操作.在出队的同时将各节点入栈,在所有的节点全部入栈后,依次出栈访问便可解决该问题. 算法描述 void InLevelOrder(BiTNode* T){ BiTNode *p=T; SqQueue Q; InitQueue(&Q); SqStack S; In