数据结构算法复习2:树相关考点

本文重点复习了二叉树的相关算法,包括使用递归和非递归方法在二叉链存储结构中寻找先序、中序、后序遍历序列中的第k个节点值,计算节点数、叶子节点数、最小值节点以及特定条件的节点个数。此外,还讨论了求解二叉树宽度和指定层次的叶子节点数量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法实现方面要求,熟练掌握二叉树的递归和非递归遍历,并能够用之解决实际问题,如:计算树的层数、度,查找满足条件的节点等。

1,假设二叉树采用二叉链存储结构存储,设计一个算法,求先序遍历序列中第k(1≤k≤二叉树中节点个数)个节点的值

递归模型

    f(b,k)=' '                              当b=NULL时返回特殊字符' '
    f(b,k)=b->data                            当k=n
    f(b,k)=((ch=f(b->lchild,k))==' '?f(b->rchild,k):ch)      其他情况

对应的递归算法

    int n=1;                                   //全局变量
    ElemType PreNode(BTNode *b,int k)
    {   ElemType ch;
        if (b==NULL)
            return ' ';
        if (n==k)
            return(b->data);
        n++;
        ch=PreNode(b->lchild,k);            //遍历左子树
        if (ch!=' ')
            return(ch);                       //在左子树中找到后返回
        ch=PreNode(b->rchild,k);           //遍历右子树
        return(ch);                           //返回右子树中的遍历结果
    }

非递归算法,先序遍历对应的算法

ElemType PreNode1(BTNode *b,int k)        //先序遍历的非递归算法
    {   BTNode *St[MaxSize],*p;
        int top=-1,n=0;
        if (b!=NULL)
        {   top++;                            //根节点进栈
            St[top]=b;
            while (top>-1)                 //栈不为空时循环
            {   p=St[top];                    //退栈并访问该节点
                top--;
                n++;
                if (n==k) return(p->data);
                if (p->rchild!=NULL)      //右孩子节点进栈
                {   top++;
                     St[top]=p->rchild;
                }
                if (p->lchild!=NULL)      //左孩子节点进栈
                {   top++;
                    St[top]=p->lchild;
                }
            }
            printf("\n");
        }
        return(' ');
    }

2,假设二叉树采用二叉链存储结构存储,设计一个算法,求中序遍历序列中第k(1≤k≤二叉树中节点个数)个节点的值。

递归算法

    int n=1;            //全局
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值