#include<iostream>
using namespace std;
//二叉链表节点定义
struct BiTree
{
char data;//数据域
BiTree* LChild;//左孩子指针
BiTree* RChild;//右孩子指针
};
//二叉链表的先序遍历
void Create(BiTree*& root)
{
char ch;
cin >> ch;
if (ch == '#')//若为空,则意味着这个结点无子树,指针域为NULL;
{
root = NULL;
}
else//如果不为空,则意味着此处有子树,我们需要为其根结点开辟空间,同时判断其左右孩子是否为空,递归使用create函数
{
root = new BiTree;//开辟空间,两个等于是判断,一个等于才是赋值
root->data = ch;
Create(root->LChild);//B#D##这一段的输入都在这个函数里,在这个函数中又可以看作是B的一棵独立的子树,里面又有这两端函数
Create(root->RChild);//CE#F###
}
}
//通过输入AB!D!!CE!F!!!,最后一个!是C的”右孩子“。
void main()
{
BiTree* Root;
Create(Root);
cout << endl;
}
用vs追踪的话其实也很简单,在调试窗口一栏找到临时变量一栏即可。