关于二叉树的实现
如图:每一个叶子结点的左右孩子皆为NULL,这里以输入‘#’为例,即输入#代表此结点为NULL,要确保每个叶子结点都要输入两个NULL(#);
下列代码以输入顺序为先序序列为例,要注意先序序列里要包括NULL,也就是该例中的#;
代码如下:
void ini_BTree(Node& T)
{
char data;
cin >> data;
//结点不存在
if (data == '#')
{
T = NULL;
}
//else if (data == '!')return;
else
{
T = new bNode;
T->data = data;
ini_BTree(T->lchild);
ini_BTree(T->rchild);
}
}
总运行代码:包括显示代码如下:
#pragma once
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
struct bNode {
char data;
bNode* lchild, * rchild;
};
typedef bNode* Node;
class BinaryTree {
friend void ini_BTree(Node& T);
public:
bNode* T = new bNode;
public:
BinaryTree() {
T = NULL;
}
};
void show(bNode *T) {
cout << T->data;
}
//构建二叉树
void ini_BTree(Node& T)
{
char data;
cin >> data;
//结点不存在
if (data == '#')
{
T = NULL;
}
//else if (data == '!')return;
else
{
T = new bNode;
T->data = data;
ini_BTree(T->lchild);
ini_BTree(T->rchild);
}
}
void PreShow(bNode* t)
{
if (t != NULL)
{
show(t);
PreShow(t->lchild);
PreShow(t->rchild);
}
}