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;
                }
                
          }
    }
    
  • 相关阅读:
    web攻击
    HTTP与HTTPS
    HTTP确认访问用户身份的认证
    Http协议(三)返回结果的HTTP状态码
    HTTP协议四(http首部)
    HTTP协议(二)报文信息
    HTTP协议(一)
    Windows10 如何设置软件开机自起动和关闭
    获取Chrome版本并下载匹配的chromedriver
    多线程Runnable
  • 原文地址:https://www.cnblogs.com/semiprimenumber/p/13852591.html
Copyright © 2011-2022 走看看