zoukankan      html  css  js  c++  java
  • 算法与数据结构笔记(二)二叉树遍历

    二叉树的遍历

    前序遍历

    前序遍历(先序遍历)即先访问根节点,再访问左子树,最后访问右子树的顺序

    递归实现前序遍历

    function Preorder(node){
          if(node==NULL){
                return;
          }
          print(node.data);
          Preorder(node.left);
          Preorder(node.right);
    }
    

    由于前序遍历先访问根节点,所以前序遍历又被称为先根遍历。

    中序遍历

    中序遍历即先访问左子树,再访问根节点,最后访问右子树的顺序

    递归实现中序遍历

    function Inorder(node){
          if(node==NULL){
                return;
          }
          
          Inorder(node.left);
          print(node.data);
          Inorder(node.right);
    }
    

    由于中序遍历在中间访问根节点,所以中序遍历又被称为中根遍历。

    后序遍历

    后序遍历即先访问左子树,再访问右子树,最后访问根节点的顺序

    递归实现后序遍历

    function Postorder(node){
          if(node==NULL){
                return;
          }
          
          Postorder(node.left);
          Postorder(node.right);
          print(node.data);
    }
    

    由于后序遍历在最后访问根节点,所以后序遍历又被称为后根遍历。

    层序遍历

    层序遍历即按层访问树的元素。

    迭代+队列是实现层序遍历

    function LineOrder(root,queue){
          queue.put(root):
          while(queue.notEmpty()){
                node = queue.get();
                printf(node.data);
                child = node.children;
                while(child!=NULL){
                      queue.put(child);
                      child = child.next;
                }
                
          }
    }
    
  • 相关阅读:
    Python 文件的输入与输出
    php获取客户端真实ip
    php设计模式(3)-观察者模式
    php设计模式(2)-单例模式
    php设计模式(1)-工厂模式
    设计模式
    设计模式-观察者模式
    include和require的区别
    php分页类
    反向Ajax,第5部分:事件驱动的Web开发
  • 原文地址:https://www.cnblogs.com/semiprimenumber/p/13852591.html
Copyright © 2011-2022 走看看