金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 编程 > 非递归实现斐波那契数列,非递归中序遍历二叉

非递归实现斐波那契数列,非递归中序遍历二叉

发布时间:2019-11-03 16:31编辑:编程浏览(158)

    读者手动模拟时需注意叶子节点的左右子树进入循环的情况

    如题:

    如果第一遍看不懂不要紧,请手动模拟体会。这个方法是设置最近访问节点,另解参考博主博文版本二

    func(Tree T){

    Pn(x)

    func(Tree T){

    if(T==NULL){
        printf("树空");
        return;
    }
    Stack S;
    while(T!=NULL||!IsEmpty(S)){
        if(T){
            push(S,T);
            T=T->lchild;
        }
        else{
            pop(S,T);
            visit(T);
            T=T->rchild;
        }
    }
    
    • n=0的情况下为0
    • n=1的情况下为2x
    • n>1的情况下为2xPn-1(x)-2(n-1)Pn-2(x)
    if(T==NULL){
        printf("树空");
        return
    }
    Stact S;
    TreeNode r=NULL;//用于标记是否是从右子树返回的,读者手动模拟一遍就知道了
    while(T!=NULL||!IsEmpty(S)){
        if(T!=NULL){
            push(S,T);
            T=T->lchild;
        }
        else{
            GetTop(S,T); //注意此处不是pop
            if(T->rchild!=null&&T->rchild!=r){
                T=T->rchild;
                push(S,T);
                T=T->lchild;
            }
            else{
                pop(S,T);
                visit(T);
                r=T;//记住最近访问的结点
                T=NULL;
            }
        }
    }
    

    本文由金沙国际官网发布于编程,转载请注明出处:非递归实现斐波那契数列,非递归中序遍历二叉

    关键词:

上一篇:没有了

下一篇:没有了