二叉树的创建
Posted 热爱编程的大忽悠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的创建相关的知识,希望对你有一定的参考价值。
定义二叉树类
按照前序遍历的方式生成树:根左右
二叉树创建代码:
node* Tree::creat(node* root)
char ch = _getch();//输入该节点的信息
if (ch == '#')//表示该节点为空
root = NULL;
else
root = new node;
root->data = ch; //生成一个节点,数据为ch
//这里是同级指针修饰,是值传递,可以用返回值解决
root->lchild=creat(root->lchild);
root->rchild=creat(root->rchild);
return root;
#include<iostream>
using namespace std;
#include<conio.h>
struct node
char data;
node* lchild;
node* rchild;
;
class Tree
private:
node* root;//指向根节点的头指针
public:
Tree() root = creat(root); //构造函数建立一个二叉树
~Tree() relase(root); //析构函数
void display(node* root);//遍历输出二叉树
node* getNode()
return root;
private:
node* creat(node* root);//调用构造函数
void relase(node* root);//析构函数调用
;
node* Tree::creat(node* root)
char ch;
cin >> ch;//输入该节点的信息
if (ch == '#')//表示该节点为空
root = NULL;
else
root = new node;
root->data = ch; //生成一个节点,数据为ch
//这里是同级指针修饰,是值传递,可以用返回值解决
root->lchild=creat(root->lchild);
root->rchild=creat(root->rchild);
return root;
void Tree::relase(node* root)
void Tree::display(node* root)
if (root == NULL)
return;
cout << root->data << endl;
display(root->lchild);
display(root->rchild);
//测试---------------------
void test()
Tree t1;
cout << "打印结果如下" << endl;
t1.display(t1.getNode());
int main()
test();
system("pause");
return 0;
引用方法创建二叉树
传入的是指针本身,不会发生同级指针修饰失败的问题,即作为实参传入的指针如果函数中形参值发生改变,那么实参指针的值也会改变
node* Tree::creat(node* &root)
char ch;
cin >> ch;//输入该节点的信息
if (ch == '#')//表示该节点为空
root = NULL;
else
root = new node;
root->data = ch; //生成一个节点,数据为ch
creat(root->lchild);
creat(root->rchild);
return root;
以上是关于二叉树的创建的主要内容,如果未能解决你的问题,请参考以下文章