问答题 设一棵二叉树以二叉链表作为它的存储表示,试编写一个算法,用括号形式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<<")"; } } }
【答案解析】