数据结构 二叉树的建立及三种遍历方法

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
typedef struct Binode{
    char data;
    struct Binode *lchild,*rchild;
}Binode,*Bitree;
void CreatTREE(Bitree &T)
{
    char ch;
    scanf("%c",&ch);
    if(ch==' ')
    {
        T=NULL;
    }
    else
    {
        T=(Bitree)malloc(sizeof(Binode));
        T->data=ch;
        CreatTREE(T->lchild);
        CreatTREE(T->rchild);
    }
    return;
}
void print_pre(Bitree &T)
{
    if((T!=NULL))
    {
        printf("%c ",T->data);
        print_pre(T->lchild);
        print_pre(T->rchild);
    }
    return;
}
void print_in(Bitree &T)
{
    if(T!=NULL)
    {
        print_in(T->lchild);
        printf("%c ",T->data);
        print_in(T->rchild);
    }
    return;
}
void print_after(Bitree &T)
{
    if(T!=NULL)
    {
        print_after(T->lchild);
        print_after(T->rchild);
        printf("%c ",T->data);
    }
}
int main()
{
    Bitree T;
    CreatTREE(T);
    print_pre(T);
    cout<<endl;
    print_in(T);
    cout<<endl;
    print_after(T);
    cout<<endl;
    return 0;
}

时间: 2024-12-10 11:24:29

数据结构 二叉树的建立及三种遍历方法的相关文章

二叉树的建立和三种遍历

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 #include <string.h> 5 typedef struct tree{ 6 int data; 7 struct tree *pLeft; 8 struct tree *pRight; 9 }*pT,T; 10 pT CreateTree(){ 11 int data=0; 12 pT p=NULL; 13 pu

二叉树的实现以及三种遍历方法--代码

1 #include<stdio.h> 2 #include <stdlib.h> 3 4 /*树的数据类型*/ 5 typedef char TElemType; 6 /*定义二叉树的结构*/ 7 typedef struct BiTNode 8 { 9 TElemType data; //数据 10 struct BiTNode *left,*right; //左右孩子节点 11 }BiTNode,*BiTree; 12 13 void createBiTree(BiTree*

C++实现二叉树的建立和三种递归遍历

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 二叉树是一种常见的数据结构,二叉树的遍历也是家常便饭的事了,这里仅仅写出一个完整的可以运行的C++代码来随便建立一个如下图所示的二叉树,建一棵二叉树是实现二叉树各种操作的基础,下面的程序也很简单,这只是二叉树练习的开始,以后的博文中,将会紧紧围绕这棵二叉树练习更多的操作:如求二叉树的大小,二叉树的深度,翻转二叉树...,这里只是基础中的基础,只是为以后的学习做铺垫. 下面给出C++代码,代码的功能包括: 1.建立如上图所示的简单的二叉树. 2.

创建二叉树的两种方法以及三种遍历方法

二叉树的两种创建方法和三种遍历方法 这里的两种创建方法,一种值得是 数据结构上面的创建方法: 方法一 代码如下: 二叉树的结构定义如下: typedef struct BinaryTreeNode{ char value; struct BinaryTreeNode *left; struct BinaryTreeNode *right; }; - c语言版 void CreateBinaryTree(BinaryTreeNode **T) { char data; scanf("%d"

谈谈vector容器的三种遍历方法

说明:本文仅供学习交流,转载请标明出处,欢迎转载! vector容器是最简单的顺序容器,其使用方法类似于数组,实际上vector的底层实现就是采用动态数组.在编写程序的过程中,常常会变量容器中的元素,那么如何遍历这些元素呢?本文给出三种遍历方法. 方法一:采用下标遍历 由于vector容器就是对一个动态数组的包装,所以在vector容器的内部,重载了[]运算符,函数原型为:reference operator [] (size_type n);所以我们可以采用类似于数组的方式来访问vector容

Jquery中each的三种遍历方法

Jquery中each的三种遍历方法 $.post("urladdr", { "data" : "data" }, function(data) { $.each(data, function(n,value) { });}); 1.选择器+遍历 $('div').each(function (i){ i就是索引值 this 表示获取遍历每一个dom对象 }); 2.选择器+遍历 $('div').each(function (index,dom

Java中Map的三种遍历方法

Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历. 告诉您们一个小秘密: (下↓面是测试代码,最爱看代码了,啰嗦再多也没用) 一般人我不告诉他哦. import java.util.*; //0 我的Main界面 public class MapTraverse { public static void main(String[] args) { String[] str = {"I love you

迭代器三种遍历方法

迭代器三种遍历方法,其中也有listIterator在遍历中加入新的元素,不会报错 1 /* 2 listIterator 方法有双向遍历的特点 3 如果要在迭代的过程中加入新的元素,那么就需要利用迭代器中的it.add()方法; 4 不能使用list.add()方法! 5 */ 6 //三种遍历list容器的方式 7 List list = new ArrayList(); 8 list.add("xiaoming"); 9 list.add("longge");

map的三种遍历方法!

map的三种遍历方法! 集合的一个很重要的操作---遍历,学习了三种遍历方法,三种方法各有优缺点~~ /* * To change this template, choose Tools | Templates * and open the template in the editor. */package cn.tsp2c.liubao; import java.util.Collection;import java.util.HashMap;import java.util.Iterator