二叉树创建、遍历

#include<iostream>
#include <stdlib.h>
#include<stdio.h>
using namespace std;
struct BinNode{
    char data;
    struct BinNode  *lchild,*rchild;
};
BinNode * T;
void creatBinTree(BinNode * &T);
void Preorder(BinNode * &T);
void Inorder(BinNode * &T);
void Posorder(BinNode * &T);
void main(){
    cout<<"创建一棵树以“#”代表空树";
    creatBinTree(T);
    cout<<"先序遍历";
    Preorder(T);
    cout<<endl;
    cout<<"中序遍历";
    Inorder(T);
    cout<<endl;
    cout<<"后序遍历";
    Posorder(T);
    cout<<endl;
    system("pause");
}
void creatBinTree(BinNode * &T){
    char ch;
    if((ch=getchar())==‘#‘) T=NULL;
    else{
        T=new BinNode;
        T->data=ch;
        creatBinTree(T->lchild);
        creatBinTree(T->rchild);
    }
}
void Preorder(BinNode * &T){
    if(T){
        cout<<T->data;
        Preorder(T->lchild);
        Preorder(T->rchild);
    }
    else cout<<"";
}
void Inorder(BinNode * &T){
    if(T){
        Inorder(T->lchild);
        cout<<T->data;
        Inorder(T->rchild);
    }
    else cout<<"";
}
void Posorder(BinNode * &T){
    if(T){
        Posorder(T->lchild);
        Preorder(T->rchild);
        cout<<T->data;
    }
    else cout<<"";
}
时间: 2024-10-13 05:40:57

二叉树创建、遍历的相关文章

[数据结构]二叉树创建与遍历

实验报告:二叉树创建与遍历 一.问题描述 二叉树是一种实用范围很广的非线性结构,一棵非空二叉树有也只有一个根结点,每个结点最多有两个子树,我们称为左子树与右子树,当一个结点的左.右子树都是空的时,沃恩称此结点为叶子结点. 二叉树有一些很好的性质,这里不再赘述.考虑如何存储一棵树,本实验选择使用链式存储结构——二叉链表:如果事先知道需要存储的二叉树是满二叉树或者完全二叉树,则可以考虑使用顺序存储,否则将浪费大量的存储空间. 对于一棵既成的二叉树,有三种遍历方式——先序.中序与后序.可以证明,一棵形

二叉树学习一:二叉树创建与遍历

二叉树的遍历有三种方式: 1)先序遍历:若二叉树为空,则空操作:不为空,则先访问根结点,先序遍历左子树,先序遍历右子树. 2)后序遍历:若二叉树为空,则空操作:不为空,则中序遍历左子树,访问根结点,中序遍历右子树. 3)后序遍历:若二叉树为空,则空操作:不为空,则后序遍历左子树,后序遍历右子树,访问根结点. 例: 1)先序遍历结果为:ABDECF 2)中序遍历结果为:DBEAFC 3)后序遍历结果为:DEBFCA 二叉树输出的思想是将树转换成线性结构输出,一般采用递归方式,非递归方式是使用栈实现

4-9 二叉树的遍历 (25分)

4-9 二叉树的遍历   (25分) 输出样例(对于图中给出的树): Inorder: D B E F A G H C I Preorder: A B D F E C G H I Postorder: D E F B H G I C A Levelorder: A B C D F G I E H 代码:(都是遍历的算法) 1 // 4-9 二叉树的遍历 2 // 3 // Created by Haoyu Guo on 04/02/2017. 4 // Copyright ? 2017 Haoy

【转】算法之二叉树各种遍历

http://blog.csdn.net/sjf0115/article/details/8645991 树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用. 二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用作二叉查找树和二叉堆或是二叉排序树.二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第i层至多有2的 i -1次方个结点:

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

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

数据结构——二叉树的遍历

"树"是一种重要的数据结构,本文浅谈二叉树的遍历问题,採用C语言描写叙述. 一.二叉树基础 1)定义:有且仅有一个根结点,除根节点外,每一个结点仅仅有一个父结点,最多含有两个子节点,子节点有左右之分. 2)存储结构 二叉树的存储结构能够採用顺序存储,也能够採用链式存储,当中链式存储更加灵活. 在链式存储结构中,与线性链表类似,二叉树的每一个结点採用结构体表示,结构体包括三个域:数据域.左指针.右指针. 二叉树在C语言中的定义例如以下: struct BiTreeNode{ int c;

C++ 二叉树深度优先遍历和广度优先遍历

二叉树的创建代码==>C++ 创建和遍历二叉树 深度优先遍历:是沿着树的深度遍历树的节点,尽可能深的搜索树的分支. //深度优先遍历二叉树void depthFirstSearch(Tree root){ stack<Node *> nodeStack; //使用C++的STL标准模板库 nodeStack.push(root); Node *node; while(!nodeStack.empty()){ node = nodeStack.top(); printf(format, n

算法之二叉树各种遍历

树形结构是一类重要的非线性数据结构,当中以树和二叉树最为经常使用. 二叉树是每一个结点最多有两个子树的有序树.通常子树的根被称作"左子树"(left subtree)和"右子树"(right subtree).二叉树常被用作二叉查找树和二叉堆或是二叉排序树.二叉树的每一个结点至多仅仅有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第i层至多有2的 i -1次方个结点:深度为k的二叉树至多有2^(k) -1个结点:对不论什么一棵二叉树

线索二叉树的遍历应用

线索二叉树的遍历,就是在已经建立后的线索二叉树中,根据线索查找结点的前驱和后继.利用在线索二叉树中查找结点的前驱和后继的思想,遍历线索二叉树. #include <stdio.h> #include <stdlib.h> #include <malloc.h> #define MAXSIZE 100 typedef char ElemType; typedef enum { Link,/*指向孩子结点*/Thread/*指向前驱或后继*/ } PointerTag; t

二叉树各种遍历

树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用. 二叉树是每个结点最多有两个子树的有序树.通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用作二叉查找树和二叉堆或是二叉排序树.二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒.二叉树的第i层至多有2的 i -1次方个结点:深度为k的二叉树至多有2^(k) -1个结点:对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为n0,