zoukankan      html  css  js  c++  java
  • 算法总结之 二叉树的递归遍历(递归和非递归)

    递归:

    package TT;
    
    public class Test116 {
       public class Node{
    	   public int value;
    	   public Node left;
    	   public Node right;
    	   
    	   public Node(int data){
    		   this.value=data;
    	   }
       }
       
       public void preOrderRecur(Node head){
    	   if(head==null){
    		   return;
    	   }
    	   System.out.println(head.value+"");
    	   preOrderRecur(head.left);
    	   preOrderRecur(head.right);
       }
       
       
       public void inOrderRecur(Node head){
    	   if(head==null){
    		   return;
    	   }
    	   inOrderRecur(head.left);
    	   System.out.println(head.value+"");
    	   inOrderRecur(head.right);
    	   
       }
       
       public void posOrderRecur(Node head){
    	   if(head==null){
    		   return;
    	   }
    	   posOrderRecur(head.left);
    	   posOrderRecur(head.right);
    	   System.out.println(head.value+" ");
       }
       
    }
    

      

    下面用图形的方式解释一下这个递归的执行过程,可能有些同学对于这个过程不是很了解:

    如果是这个样子的二叉树:

     public void preOrderRecur(Node head){
    	   if(head==null){                              1
    		   return;
    	   }
    	   System.out.println(head.value+"");           2
    	   preOrderRecur(head.left);                    3
    	   preOrderRecur(head.right);                   4
       }

    首先是这样:对于每行逻辑代码 我做了个标记

    对于函数的的调用时需要入栈 进栈的

     

  • 相关阅读:
    NSDate
    Info.plist字段列表详解
    面向对象编程思想以及强、弱引用总结
    分类(类别/Category)与 类扩展(Extension)
    UIAlertView
    SQLite3的运用
    快速创建单例
    C++ 常用设计模式
    I2S 总线学习:2-I2S驱动WM8978
    设计模式的七大原则
  • 原文地址:https://www.cnblogs.com/toov5/p/7508473.html
Copyright © 2011-2022 走看看