zoukankan      html  css  js  c++  java
  • 简单的递归遍历树

    对于树的递归,不,应该说对于递归,我一直都不是特别的懂,一直处于混沌状态。对于树的遍历,当初学数据结构的时候,自己能按照规则遍历出来,但是用程序当时根本就不明白。其实递归已经在很对地方讲到了,可我就是不明白,估计这是我的一个要害。

    还在看算法,Java实现树的递归遍历,不错不错,稍稍修改了,保存起来,虽然是一个很简单的程序,但�歉业钠舴⒑艽螅匾乃枷氩皇锹穑�

    树是如附件所示的那个样子。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    package alg;
     
    public class TraverTree {
    	static class Item{
    		int text;
    		Item(int i){
              this.text=i;			
    		}
    		private void visit(){
    			System.out.print(this.text+",");
    		}
    	}//class Item
    	static class Node{
    		Item item;
    		Node right;
    		Node left;
    		Node(Item item,Node l,Node r){
    			this.item=item;
    			this.right=r;
    			this.left=l;
    		}		
    	}//class Node
        private static void traverM(Node n){
        	if(n==null)return;    	
        	traverM(n.left);
        	n.item.visit();
        	traverM(n.right);
        }//中序遍历
        private static void traverF(Node n){
        	if(n==null)return;
        	n.item.visit();
        	traverF(n.left);
        	traverF(n.right);
        }//先序遍历
        private static void traverL(Node n){
        	if(n==null)return;    	
        	traverL(n.left);
        	traverL(n.right);
        	n.item.visit();
        }//后序遍历  
     
    	public static void main(String[] args) {
    		Node root=createTree();
    		System.out.print("中序遍历的结果是:");
    		traverM(root);
     
    		System.out.println();
    		System.out.print("先序遍历的结果是:");
    		traverF(root);
    		
    		System.out.println();
    		System.out.print("后序遍历的结果是:");
    		traverL(root);
    	}
    	public static Node createTree(){
    		//生成叶子节点
    		Item item=new Item(6);
    		Node leaf_1=new Node(item,null,null);
    		
    		item=new Item(7);
    		Node leaf_2=new Node(item,null,null);
    		
    		item=new Item(10);
    		Node leaf_3=new Node(item,null,null);
    		
    		item=new Item(12);
    		Node leaf_4=new Node(item,null,null);
    		
    		item=new Item(5);
    		leaf_1=new Node(item,leaf_1,leaf_2);
    		
    		item=new Item(8);
    		leaf_2=new Node(item,leaf_3,leaf_4);
    		
    		item=new Item(1);
    		Node root=new Node(item,leaf_1,leaf_2);
    		
    		return root;	//返回根节点	
    	}
     
    }
     
    



  • 相关阅读:
    Alpha、Beta、RC、GA版本的区别
    convertView
    Layouts
    Styles and Themes
    Android Studio
    Promise.race
    Base64
    NodeJS搭建HTTPS服务器
    CoreSeek
    Ping of Death
  • 原文地址:https://www.cnblogs.com/lan0725/p/1873874.html
Copyright © 2011-2022 走看看