#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef struct t {
char n;//数据
t* left;//左儿子的指针
t* right;//右儿子的指针
}TREE, * tree;
tree createtree(tree& root)//二叉树的建立
{
char temp;
cin >> temp;//用临时变量
if (temp == '#') {//判断一下字符是不是#,是意味着到此为止
root = NULL;//当然,一开始就输入#的话根节点直接是NULL
}
else {//不是。说明该节点有一个对应的儿子
root = (tree)malloc(sizeof(TREE));
root->n = temp;//给儿子赋值
createtree(root->left);//看看儿子的左边
createtree(root->right);//看看儿子的右边
}
return root;
}
void preordertraverse(tree& root)//二叉树的先序便利(递归版)
{
if (root) {//不能为空
printf("%c ", root->n);//先打印本节点
preordertraverse(root->left);//再去访问左节点
preordertraverse(root->right);//再去访问右节点
}
return;
}
int main() {
tree root;
root = createtree(root);//建立树,建立完毕自动执行完毕,返回根节点的指针
if (root) {//建立成功了
preordertraverse(root);
}
else {
cout << "树是空的" << endl;
}
return 0;
}
二叉树的先序构造以及递归版本的先序遍历
最新推荐文章于 2022-07-20 10:41:49 发布