zoukankan      html  css  js  c++  java
  • 二叉树的中序遍历

    递归模板(简单)

    基本思路:访问入口函数,放在两个递归函数之间

    void InOrder(BiTree T){
        if(T != NULL){        
            InOrder(T->lchild);
            visit(T);
            InOrder(T->rchild);
        }
    }

    非递归模板(效率高)

    基本思路:

    • 初始化一个栈,从根结点遍历左孩子一直到树叶,全部压入栈

    • 判断栈不为空,输出栈顶结点,然后从输出的当前结点的右孩子开始遍历

    • 重复以上步骤直到栈为空或者子树为空

    // 中序遍历模板
    void InOrderNonrecursion(BTNode *bt){
        if(bt != NULL){        
            BTNode *Stack[maxSize];           // 初始化栈
            int top = -1;
            BTNode *p;
            p = bt;
            while(top != -1 || p != NULL){    // 空栈而且子树遍历完结束循环
                while(p != NULL){             // 左孩子不为空,左孩子进栈,一直到左孩子为空
                    Stack[++top] = p;        
                    p = p->lchild;
                }
                if(top != -1){                // 若堆栈不空,出栈并输出出栈结点,访问节点,将p指向右孩子
                    p = Stack[top--];
                    Visit(p);                 
                    p = p->rchild;
                }                
            }
        }
    }
  • 相关阅读:
    及时说爱
    坚持
    html5新增元素
    js call
    smarty实例教程
    JS 跨浏览器兼容问题
    CSS3中的5个有趣的新技术
    jQuery和dom转化
    前端安全问题
    js apply
  • 原文地址:https://www.cnblogs.com/YC-L/p/12094679.html
Copyright © 2011-2022 走看看