首页 > 代码库 > 创建二叉树 树的深度搜索 广度搜索

创建二叉树 树的深度搜索 广度搜索

树的深度搜索 与树的前序遍历同理 根节点->左孩子->右孩子  树的广度搜索 与树的层次遍历同理 一层一层遍历内容

深度搜索 采用stack的适配器 先进后出原则  而广度搜索采用的queue适配器 先进先出原则 二者正好满足 搜索需求 简要代码如下:

#include <iostream>
#include <stack>
#include <queue>
#include <malloc.h>

using namespace std;

typedef struct node{
    char data;
    struct node* lchild;        //结构体并未定义完全 采用struct node* 类型
    struct node* rchild;
    node():lchild(NULL),rchild(NULL){}
}*Tree;

int index = 0;  //全局变量

//此处采用递归创建树,传入对象为引用类型,因为在新加入的左右孩子的同时,需要保存整棵树的结构
void createtree(Tree& root,char data[]){
    char e = data[index++];
    if(e == ‘#‘){
        root = NULL;
    }else{
    root = new node();
    root->data = http://www.mamicode.com/e;>
以上创建树的递归过程如下图分析:


只给出了一半树创建的过程,另一半创建的过程 与其一致。

最后创建完成树的图像即:



而本测试小例,产生的结果如下:


简单阐述了 树的深度,广度搜索。