二叉树的创建与遍历

二叉树是一个极其重要的数据结构,必须稳固掌握,在下就浅谈二叉树的基本操作。首先,是二叉树的创建,创建分为三种方式,先序,中序,后序,本博文以先序为例,其他两种类似。亲身测试,能执行。代码如下:
h文件

#ifndef _TREE_H
#define _TREE_H
#include<vector>
#include<iostream>
using namespace std;
typedef struct BiNode
{
   char data;
   BiNode *left,*right;
}BiNode,*BiTree;
void CreateBiTree(BiTree &T);
void PrintTree(BiTree &T);
#endif

cpp文件

#include"Tree.h"
void CreateBiTree(BiTree &T)
{  
    char c;  
    cin >> c;  
    if('#' == c)  
        T = NULL;  
    else  
    {  
        T = new BiNode;  
        T->data = c;  
        CreateBiTree(T->left);  
        CreateBiTree(T->right);  
    }  
}  

此处,特别要注意输入数据的格式,不同的创建方法,输入格式不同,如果输入格式不匹配,将得不到任何结果,会处于循环递归,切记。如果你是使用先序进行创建二叉树,那么在输入数据的时候,必须要用先序的二叉树格式,此处用#代表最后的叶子节点,如果没有这个,将无穷递归下去。
二叉树的遍历与创建 一样,本例也用先序遍历为例进行说明,很简单,一看就明白,代码如下:

void PrintTree(BiTree &t)
{
    if(t==NULL)
    {
        return;
    }
    else
    {
        cout<<t->data;
        PrintTree(t->left);     
        PrintTree(t->right);
    }
}

先访问根节点,在访问左子树,最后访问右子树,当访问到左子树的叶子节点,先访问左节点,再访问右节点,然后递归上去到父节点级别,由于其左右叶节点的父节点早之他们先被访问,所以会跳转到访问该父节点的右兄弟,这样依次递归,最终访问完所有节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值