顺序表中的完全二叉树转存到二叉链表中

题目

一棵完全二叉树存储于顺序表s中,s.elem[1...s.last],
编写算法建立二叉树的二叉链表

解法

优先考虑使用递归算法建立树

点击查看代码
//主函数中传入的i为1
void CreateTree(slist l, bitree &t, int i) //前序创建
{
    t = new binode; //创建新结点
    t->data = l.data[i];
    if (l.length >= 2 * i) //若长度大于2i,证明此节点有左子树
        CreateTree(l, t->lchild, 2 * i);
    else
    {
        t->lchild = NULL;
    }
    if (l.length >= 2 * i + 1) //若长度大于2i+1,证明此节点有右子树
        CreateTree(l, t->rchild, 2 * i + 1);
    else
    {
        t->rchild = NULL;
    }
}
上一篇:二叉树的应用


下一篇:查找与排序算法的设计和实现(实现插入、选择等各种排序算法)