二叉树由于其本身是递归定义的,所以一般也以递归的方式建立二叉树
#include<iostream>
using namespace std;
struct node{//节点结构体定义
struct node* left_child;
struct node* right_child;
char data;
};
void create_BiTree1(node* &T)//传入引用类型
{
char ch;
cin>>ch;
if(ch=='#'){
T==NULL;
}
else{
T = new node;
T->data = ch;
cout<<T->data<<endl;
create_BiTree1(T->left_child);
create_BiTree1(T->right_child);
}
}
node* create_BiTree2(node* T)//传入指针
{
char ch;
cin>>ch;
if(ch=='#'){
T = NULL;
}
else{
T = new node;
T->data = ch;
cout<<T->data<<endl;
create_BiTree2(T->left_child);
create_BiTree2(T->right_child);
}
return T;
}
void preorder_traversal(node* T)
{
//递归法先序遍历二叉树
if (T != NULL) {
cout << T->data;
preorder_traversal(T->left_child);
preorder_traversal(T->right_child);
}
}
int main()
{
node* T1;
node* T2;
create_BiTree1(T1);
create_BiTree2(T2);
preorder_traversal(T1);
}
github 原文地址