请修改下面的源代码实现如下问题要求(实际上只需修改3.4两个要求)

问题描述:创建二叉树并遍历
基本要求:
1、 分别运用非递归的方式完成对二叉树的先序和后序遍历
2、 输出二叉树的高度
3、 输出每一层的结点数
4、 查找结点P 和结点Q的最近共同祖先

http://www.hadxw.com/forum.php?mod=viewthread&tid=11&extra=page%3D1

作者: songxxu   发布时间: 2011-06-13

问题3是按层次遍历二叉树:
C/C++ code

//按层遍历算法   
void LevelOrder(BTreeNode* BT)   
{   
    //定义存储二叉树结点指针的数组空间作为队列使用   
    const MaxSize=30;  //为防止溢出,数组长度要不小于任何相邻两层的结点数之和   
    BTreeNode* Q[MaxSize];   
    //定义队首指针和队尾指针,初始均置0表示空队   
    int front=0, rear=0;   
    //定义结点指针类型的变量p   
    BTreeNode* p;   
    //树根结点指针进队   
    if(BT!=NULL) {   
        rear=(rear+1)%MaxSize;   
        Q[rear]=BT;   
    }   
    //当队列非空时执行循环   
    while(front!=rear) {   
        front=(front+1)%MaxSize;  //后移队首指针   
        p=Q[front];               //删除队首结点   
        cout<<p->data<<' ';       //输出队首结点的值   
        if(p->left!=NULL) {//若结点存在左孩子,则左孩子结点指针进队   
            rear=(rear+1)%MaxSize;   
            Q[rear]=p->left;   
        }   
        if(p->right!=NULL) {//若结点存在右孩子,则右孩子结点指针进队   
            rear=(rear+1)%MaxSize;   
            Q[rear]=p->right;   
        }   
    }   
}   


这里有发:http://read.pudn.com/downloads10/sourcecode/math/42397/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%B1%BB.cpp__.htm

作者: dizuo   发布时间: 2011-06-13

查找结点P和Q的共同祖先:
  当结点结构中有一个指向父节点的指针:parent,或者二叉树是二分搜索树比较简单:
http://www.cnblogs.com/chenwenbiao/archive/2011/05/26/2058261.html
对于一般的二叉树只能这么整了:
http://www.cnblogs.com/chenwenbiao/archive/2011/05/26/2058139.html

作者: dizuo   发布时间: 2011-06-13

lz,我想你可以结贴了,问题搞定~

作者: dizuo   发布时间: 2011-06-13