2021-11-12 手动构建二叉树,并实现广度遍历和深度遍历

2021-11-12 手动构建二叉树,并实现广度遍历和深度遍历,第1张

2021-11-12 手动构建二叉树,并实现广度遍历和深度遍历 手动构建二叉树,并实现两种遍历方式

如下图,链表的每一个节点是由data 和next 指针构成。

树的每个节点,每个点都是由两个next 指针构成。


下面开始模拟构建树的节点

先创建 二叉树对象 类 TreeNode class

public class TreeNode{
    private Integer data;
    private TreeNode left;  //左节点
    private TreeNode right; //右节点
    
    public TreeNode(Integer data){
        this.data = data;
    }
    //set get 方法
    public Integer getData(){
        return data;
    }
    public void setData(Integer data){
        this.data = data;   
    }
    	
    public TreeNode getLeft(){
        return left;
    }
    public void setData(TreeNode left){
        this.left = left;
    }
     public TreeNode getRight() {
        return right;
    }

    public void setRight(TreeNode right) {
        this.right = right;
    }
}

上边内容是用来创建 TreeNode 对象,main测试及两种遍历在下面。

下面,创建 MainTest 来测试一下

public static void main(String[] args) {
     //创建7个节点
     TreeNode root = new TreeNode(1);
     TreeNode node2 = new TreeNode(2);
     TreeNode node3 = new TreeNode(3);
     TreeNode node4 = new TreeNode(4);
     TreeNode node5 = new TreeNode(5);
     TreeNode node6 = new TreeNode(6);
     TreeNode node7 = new TreeNode(7);

     //将这些节点够成一个二叉树
     root.setLeft(node2);
     root.setRight(node3);
     node2.setLeft(node4);
     node2.setRight(node5);
     node3.setLeft(node6);
     node3.setRight(node7);
    
    
	  //下面是测试一下这两种 遍历方式  广度遍历和深度遍历
	System.out.println("按照广度遍历:");
    printByLayer(root); //输出结果: 1 2 3 4 5 6 7
    System.out.println("深度优先遍历的三种方式:")
    System.out.println("先序遍历:");
    pre_print(root);
    System.out.println("");
    System.out.println("中序遍历:");
    mid_print(root);
    System.out.println("");
    System.out.println("后序遍历:");
    last_print(root);
}//mian
	
    
    
    
    
    /
    /
    /
    public static void pre_print(TreeNode root) {
        if (root != null) {  //节点不空,才输出
            //根
            System.out.print(root.getData());
            System.out.print(" ");
            //左
            if (root.getLeft() != null) {
                pre_print(root.getLeft());
            }
            //右
            if (root.getRight() != null) {
                pre_print(root.getRight());
            }
        }
    }//pre_print()

    
    public static void mid_print(TreeNode root) {
        if (root != null){
            //左
            if (root.getLeft()!=null){
                mid_print(root.getLeft());
            }
            //根
            System.out.print(" ");
            System.out.print(root.getData());
            //右
            if (root.getRight()!=null){
                mid_print(root.getRight());
            }
        }
    }//mid_print()

    
    public static void last_print(TreeNode root){
        if (root!=null){
            //左
            if (root.getLeft()!=null){
                last_print(root.getLeft());
            }
            //右
            if (root.getRight()!=null){
                last_print(root.getRight());![请添加图片描述](https://img-blog.csdnimg.cn/21131c076b144dc7a88b96c6c731baa3.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAREtfMTAwMzI=,size_20,color_FFFFFF,t_70,g_se,x_16)

            }
            //根
            System.out.print(root.getData());
            System.out.print(" ");
        }
    }//last_print()

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5482250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存