根据二叉树的先序遍历建立二叉树
2017-11-11 14:32
197 查看
#include<iostream>
#include<queue>
//#include<stdio.h>
using namespace std;
#define Elemtype char
typedef struct node
{
Elemtype data;
node* left_child;
node* right_child;
}node,*BST;
void build_pre(node*& one_node,queue<Elemtype>& q)//入口这里的指针意思是有意愿在某处建立结点
{
if (q.empty() != true)
{
if (q.front() == '#')
{
one_node = NULL;//这个结点指向空,空不可访问,所以不建立这个节点(子树)
q.pop();
}
else
{
one_node = (node*)malloc(sizeof(node));//造结点建立结点的过程
one_node->data = q.front();
one_node->left_child = NULL;
one_node->right_child = NULL;
q.pop();
build_pre(one_node->left_child, q);//建立左孩子(左子树)
build_pre(one_node->right_child, q);//建立右孩子(右子树)
}
}
}
int main()
{
BST tree = NULL;//指向树的根节点,此时是空树(什么都没有,不存在树)
queue<Elemtype> q;
int n = 0;
cout << "input n" << endl;
cin >> n;
cout << "input nums" << endl;
for (int i = 0; i < n; i++)
{
Elemtype temp;
cin >> temp;
q.push(temp);
}
build_pre(tree, q);
return 0;
}
#include<queue>
//#include<stdio.h>
using namespace std;
#define Elemtype char
typedef struct node
{
Elemtype data;
node* left_child;
node* right_child;
}node,*BST;
void build_pre(node*& one_node,queue<Elemtype>& q)//入口这里的指针意思是有意愿在某处建立结点
{
if (q.empty() != true)
{
if (q.front() == '#')
{
one_node = NULL;//这个结点指向空,空不可访问,所以不建立这个节点(子树)
q.pop();
}
else
{
one_node = (node*)malloc(sizeof(node));//造结点建立结点的过程
one_node->data = q.front();
one_node->left_child = NULL;
one_node->right_child = NULL;
q.pop();
build_pre(one_node->left_child, q);//建立左孩子(左子树)
build_pre(one_node->right_child, q);//建立右孩子(右子树)
}
}
}
int main()
{
BST tree = NULL;//指向树的根节点,此时是空树(什么都没有,不存在树)
queue<Elemtype> q;
int n = 0;
cout << "input n" << endl;
cin >> n;
cout << "input nums" << endl;
for (int i = 0; i < n; i++)
{
Elemtype temp;
cin >> temp;
q.push(temp);
}
build_pre(tree, q);
return 0;
}
相关文章推荐
- 根据先序遍历建立一个二叉树
- 根据二叉树的先序遍历和中序遍历建立二叉树
- 根据先序遍历和中序遍历建立二叉树
- Java实现——根据先序遍历和中序遍历,确定二叉树
- 根据先序和中序或后序和中序建立二叉树及树的遍历
- 由先序遍历和中序遍历建立二叉树
- UVA548递归二叉树求路径和和根据中序和后序建立二叉树
- HDU 5444 二叉树的遍历,先根据先序遍历建树
- 根据后序和中序建立二叉树
- 小白书之根据二叉树的先序遍历和中序遍历得出后序遍历
- 1935. 二叉树重建(根据先序遍历和中序遍历重建二叉树并进行广度优先遍历)
- 建立二叉树(已知中序遍历和先序遍历)
- 根据前序和中序建立二叉树
- 先序遍历建立二叉树,求保存最大数字的叶子节点到最小数字的叶子结点的距离 2016网易编程题
- 二叉树的建立(根据遍历结果构建)、遍历(非递归)和搜索
- 根据先序遍历中序遍历重建二叉树
- 建立二叉树,实现二叉树的先序遍历、中序和后序遍历的非递归算法
- [leetcode]_根据二叉树的先序遍历(后序遍历) + 中序遍历 重建二叉树
- 根据先序遍历和中序遍历创建二叉树
- 二叉树:根据二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列