问答题
设一棵二叉树以二叉链表作为它的存储表示,试编写一个算法,用括号形式key(LT,RT)输出二叉树的各个结点。其中,key是根结点的数据,LT和RT是括号形式的左子树和右子树。要求空树不打印任何信息,一个结点的树的打印形式是x,而不应是(x,)的形式。
【正确答案】算法对于左、右子树都不空的结点,以key(LT,RT)的形式输出;对于左子树为空、右子树不空的结点,以key(,RT)的形式输出;对于左子树不空、右子树为空的结点,以key(LT)的形式输出,以区分左、右;对于左、右子树都为空的结点,以key的形式输出。
void print_BinTree(BTNode *t)
{
if(t !=NULL)
{
cout<<t→data;
if(t→lchild !=NULL || t→ rchiid !=NULL)
{
cout<<"(";
print_BinTree(t→lchild);
if(t→rchild !=NULL)
cout<<",";
print_BinTree(t→rchild);
cout<<")";
}
}
}
【答案解析】