zoukankan      html  css  js  c++  java
  • 二叉树创建及各种遍历的实现

    package com.ywx.count;
    
    /**
     * 
     * @author Vashon
     * data:20150323
     * 题目:二叉树的创建和二叉树的先序遍历、中序遍历、后序遍历
     */
    class BinaryTree{
    	int data;  //根节点数据
    	BinaryTree left;//左子树
    	BinaryTree right;//右子树
    	
    	public BinaryTree(int data){//实例化二叉树类
    		this.data=data;
    		left=null;
    		right=null;
    	}
    	public void insert(BinaryTree root,int data){//向二叉树中插入子节点
    		if(data>root.data){  //二叉树的左节点都比根节点小
    			if(root.right==null){
    				root.right=new BinaryTree(data);
    			}else{
    				this.insert(root.right, data);//如果不为null则继续递归插入
    			}
    		}else{   //二叉树的右节点都比根节点大
    			if(root.left==null){
    				root.left=new BinaryTree(data);
    			}else{
    				this.insert(root.left, data);
    			}
    		}
    	}
    }
    //当建立好二叉树类后可以创建二叉树实例,并实现二叉树的先根遍历,中根遍历,后根遍历,代码如下:
    
    public class BinaryTreePreorder {
    	public static void main(String args[]){
    		int array[]={12,11,44,21,65,32,89,61,64};
    		BinaryTree root=new BinaryTree(array[0]);//创建二叉树
    		for(int i=1;i<array.length;i++){
    			root.insert(root, array[i]);//向二叉树中插入数据
    		}
    		System.out.println("先根遍历:");
    		preOrder(root);
    		System.out.println();
    		System.out.println("中根遍历:");
    		inOrder(root);
    		System.out.println();
    		System.out.println("后根遍历:");
    		postOrder(root);
    	}
    	//先根遍历
    	public static void preOrder(BinaryTree root){
    		if(root!=null){
    			System.out.println(root.data+"-");
    			preOrder(root.left);
    			preOrder(root.right);
    		}
    	}
    	//中根遍历
    	public static void inOrder(BinaryTree root){
    		if(root!=null){
    			inOrder(root.left);
    			System.out.println(root.data+"-");
    			inOrder(root.right);
    		}
    	}
    	//后根遍历
    	public static void postOrder(BinaryTree root){
    		if(root!=null){
    			postOrder(root.left);
    			postOrder(root.right);
    			System.out.println(root.data+"-");
    		}
    	}
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    Stay Hungry, Stay Foolish, Walking in Life
  • 相关阅读:
    配置文件管理
    Nacos学习
    dockerCompose学习
    Dockerfile
    vue生命周期
    github使用
    推荐系统
    js笔记17
    js笔记16
    js笔记15
  • 原文地址:https://www.cnblogs.com/ywx-vashon/p/4895804.html
Copyright © 2011-2022 走看看