• 二叉树的遍历


    二叉树的遍历应用实例

    前序遍历,中序遍历,后序遍历步骤
    前序遍历

    1.先输出当前节点

    2.如果当前节点的左子节点不为空,则递归前序遍历

    3.如果当前节点的右子节点不为空,则递归前序遍历

    中序遍历

    1.如果当前节点的左子节点不为空,则递归中序遍历

    2.输出当前节点

    3.如果当前节点的右子节点不为空,则递归中序遍历

    后序遍历

    1.如果当前节点的左子节点不为空,则递归后序遍历

    2.如果当前节点的右子节点不为空,则递归后序遍历

    3.输出当前节点

    代码实现:

    先创建HeroNode 结点

    class HeroNode {
    	private int no;
    	private String name;
    	private HeroNode left; //默认null
    	private HeroNode right; //默认null
    	public HeroNode(int no, String name) {
    		this.no = no;
    		this.name = name;
    	}
    	public int getNo() {
    		return no;
    	}
    	public void setNo(int no) {
    		this.no = no;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public HeroNode getLeft() {
    		return left;
    	}
    	public void setLeft(HeroNode left) {
    		this.left = left;
    	}
    	public HeroNode getRight() {
    		return right;
    	}
    	public void setRight(HeroNode right) {
    		this.right = right;
    	}
    	@Override
    	public String toString() {
    		return "HeroNode [no=" + no + ", name=" + name + "]";
    	}
    	
    	//编写前序遍历的方法
    	public void preOrder() {
    		System.out.println(this); //先输出父结点
    		//递归向左子树前序遍历
    		if(this.left != null) {
    			this.left.preOrder();
    		}
    		//递归向右子树前序遍历
    		if(this.right != null) {
    			this.right.preOrder();
    		}
    	}
    	//中序遍历
    	public void infixOrder() {
    		
    		//递归向左子树中序遍历
    		if(this.left != null) {
    			this.left.infixOrder();
    		}
    		//输出父结点
    		System.out.println(this);
    		//递归向右子树中序遍历
    		if(this.right != null) {
    			this.right.infixOrder();
    		}
    	}
    	//后序遍历
    	public void postOrder() {
    		if(this.left != null) {
    			this.left.postOrder();
    		}
    		if(this.right != null) {
    			this.right.postOrder();
    		}
    		System.out.println(this);
    	}
    }
    

    定义BinaryTree 二叉树

    class BinaryTree {
    	private HeroNode root;
    
    	public void setRoot(HeroNode root) {
    		this.root = root;
    	}
    	
    	//前序遍历
    	public void preOrder() {
    		if(this.root != null) {
    			this.root.preOrder();
    		}else {
    			System.out.println("二叉树为空,无法遍历");
    		}
    	}
    	
    	//中序遍历
    	public void infixOrder() {
    		if(this.root != null) {
    			this.root.infixOrder();
    		}else {
    			System.out.println("二叉树为空,无法遍历");
    		}
    	}
        
    	//后序遍历
    	public void postOrder() {
    		if(this.root != null) {
    			this.root.postOrder();
    		}else {
    			System.out.println("二叉树为空,无法遍历");
    		}
    	}
    }
    
    package com.atguigu.tree;
    
    public class BinaryTreeDemo {
    
    	public static void main(String[] args) {
    		//先需要创建一颗二叉树
    		BinaryTree binaryTree = new BinaryTree();
    		//创建需要的结点
    		HeroNode root = new HeroNode(1, "宋江");
    		HeroNode node2 = new HeroNode(2, "吴用");
    		HeroNode node3 = new HeroNode(3, "卢俊义");
    		HeroNode node4 = new HeroNode(4, "林冲");
    		HeroNode node5 = new HeroNode(5, "关胜");
    		
    		//说明,我们先手动创建该二叉树,后面我们学习递归的方式创建二叉树
    		root.setLeft(node2);
    		root.setRight(node3);
    		node3.setRight(node4);
    		node3.setLeft(node5);
    		binaryTree.setRoot(root);
    		
    		//测试
            System.out.println("前序遍历"); 
            binaryTree.preOrder();// 1,2,3,5,4
    		
    		//测试 
    		System.out.println("中序遍历");
    		binaryTree.infixOrder(); // 2,1,5,3,4
    	
            System.out.println("后序遍历");
            binaryTree.postOrder(); // 2,5,4,3,1
    				
    	}
    
    }
    

    代码运行结果:

    这篇博客是我在B站看韩顺平老师数据结构和算法的课时的笔记,记录一下,防止忘记,也希望能帮助各位朋友。

  • 相关阅读:
    分类预测 | MATLAB实现SSA-CNN-LSTM-Attention数据分类预测(SE注意力机制)
    极客日报:同一个手机号或可注册两个微信号;第三代AirPods不再支持iPhone 6等老手机
    SpringBoot 常用读取配置文件的 3 种方法!
    Python asyncore模块-客户端
    Android自动化测试工具调研
    新能源行业经销商在线系统:轻松掌握经销商,优化分销渠道链
    240个Python练习案例附源码(百看不如一练)
    jQuery过滤器:筛选jquery对象数组中的DOM对象
    6※、线程同步、同步锁、同步代码块的使用、同步锁释放的时机、ReentrantLock可重入锁
    考勤管理系统
  • 原文地址:https://www.cnblogs.com/malinyan/p/BinaryTree.html