• java 二叉树遍历


    package com.lever;

    import java.util.LinkedList;
    import java.util.Queue;

    /**
    * 二叉树遍历
    * @author lckxxy
    *
    */
    public class Node {

    public int value;
    public Node left;
    public Node right;

    public Node(int v) {
    this.value = v;
    this.left = null;
    this.right = null;
    }

    public static void main(String[] args) {

    StringBuffer str = new StringBuffer();
    str.append("hello world");
    String test = str.toString();
    System.out.println(test.replace(" ", "%20"));

    Node n1 = new Node(1);
    Node n2 = new Node(2);
    Node n3 = new Node(3);
    Node n4 = new Node(4);
    Node n5 = new Node(5);
    Node n6 = new Node(6);
    Node n7 = new Node(7);
    Node n8 = new Node(8);
    Node n9 = new Node(9);
    Node n10 = new Node(10);
    n1.left = n2;
    n1.right = n3;
    n2.left = n4;
    n2.right = n5;
    n3.left = n6;
    n3.right = n7;
    n4.left = n8;
    n4.right = n9;
    n5.left = n10;
    levelTravel(n1);
    }

    /**
    *
    * @param root
    * 树根节点
    * 层序遍历二叉树,用队列实现,先将根节点入队列,只要队列不为空,然后出队列,并访问,接着讲访问节点的左右子树依次入队列
    */
    public static void levelTravel(Node root) {

    if (root == null)
    return;
    // 当前行最后一个元素
    Node last = root;
    // 下一行最后一个元素
    Node nlast = root.right == null ? root.left : root.right;
    Queue q = new LinkedList();
    q.add(root);
    while (!q.isEmpty()) {
    Node temp = (Node) q.poll();
    System.out.print(temp.value + " ");
    if (temp.left != null) {
    q.add(temp.left);
    // 如果左儿子不为空,把nlast置为左儿子,这样保证nlast永远是当前行最新一个
    nlast = temp.left;
    }

    if (temp.right != null) {
    q.add(temp.right);
    // 如果右儿子不为空,把nlast置为右儿子
    nlast = temp.right;
    }
    // 如果当前node跟last相同,说明该换行了,输出换行符,并将nlast的赋给last
    if (temp.equals(last)) {
    System.out.println();
    last = nlast;
    }
    }
    }
    }

  • 相关阅读:
    去除 CSDN “官方免费去广告 + 万能工具”
    github 搜索技巧常用
    Python 使用 __doc__ 查看文档
    油猴脚本编写自己的脚本来去除知乎 "我们检测到你可能使用了 AdBlock 或 Adblock Plus"
    Unity 中的 C# Instantiate() 方法解析
    《流畅的 Python 》第 2 章笔记
    html 中 a 标签中 href 的路径相关问题
    VScode 复制代码到博客园编辑器自动带上代码标签问题
    Vue在Ubuntu上的部署
    在ubuntu上编译方式安装nginx
  • 原文地址:https://www.cnblogs.com/gentleman-cklai/p/7107116.html
Copyright © 2020-2023  润新知