美文网首页
从上到下遍历二叉树-Java

从上到下遍历二叉树-Java

作者: myserendipit | 来源:发表于2018-08-02 13:49 被阅读8次
package algorithm;

import algorithm.base.TreeNode;

import java.util.LinkedList;

public class BinaryTreeTraversal {

  /***
   * 从上到下遍历二叉树
   *
   * 需要一个辅助队列存放当前节点和其左右子节点
   * 每遍历一个节点,都把它左右子节点放入队列中
   */
  public static void up2Down(TreeNode node) {
    if (node == null) return;
    LinkedList<TreeNode> list = new LinkedList<>();
    TreeNode head = node;
    list.add(head);
    while (!list.isEmpty()) {
      TreeNode aNode = list.pop();
      TreeNode left = aNode.leftNode;
      TreeNode right = aNode.rightNode;
      if (left != null) {
        list.add(left);
      }
      if (right != null) {
        list.add(right);
      }
      System.out.println(aNode.value);
    }
  }

  public static void main(String[] args) {
    TreeNode<Integer> node1 = new TreeNode<>(8);
    TreeNode<Integer> node2 = new TreeNode<>(6);
    TreeNode<Integer> node3 = new TreeNode<>(10);
    TreeNode<Integer> node4 = new TreeNode<>(5);
    TreeNode<Integer> node5 = new TreeNode<>(7);
    TreeNode<Integer> node6 = new TreeNode<>(9);
    TreeNode<Integer> node7 = new TreeNode<>(11);

    node1.leftNode = node2;
    node1.rightNode = node3;
    node2.leftNode = node4;
    node2.rightNode = node5;
    node3.leftNode = node6;
    node3.rightNode = node7;

    TreeNode<Integer> n = new TreeNode<>(99);
    n.leftNode = null;
    n.rightNode = null;

    up2Down(n);
    up2Down(node1);
  }

}

package algorithm.base;

public class TreeNode<T> {
  public T value;
  public TreeNode leftNode;
  public TreeNode rightNode;

  public TreeNode(T value) {
    this.value = value;
    leftNode = null;
    rightNode = null;
  }
}

相关文章

  • 面试题32:从上到下打印二叉树

    题目1:不分行从上到下打印二叉树,层次遍历 解析:该问题就是二叉树的层次遍历。 题目2:分行从上到下打印二叉树。 ...

  • 二叉树的基本算法

    一、二叉树的递归遍历 二、二叉树的层次遍历 二叉树的层次遍历是指二叉树从上到下,从左到右遍历数据。同一层中的节点访...

  • 二叉树BinaryTree

    Java 实现二叉树的构造以及遍历过程 二叉树遍历(先序、中序、后序)

  • python_树的遍历_深度优先广度优先

    广度优先(层次遍历) 从树的root开始,从上到下从左到右遍历整个树的节点 数和二叉树的区别就是,二叉树只有左右两...

  • 二叉树遍历java,非递归、层次。

    /** * 前序遍历 * 递归 */ /*** 前序遍历* 非递归*/ 后续遍历非递归 二叉树层次遍历基于java...

  • 二叉树的基础+剑指offer32题

    二叉树的简单创建 遍历等题目:不分行从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺...

  • Java二叉树的遍历

    Java二叉树的遍历 利用递归和非递归实现二叉树的先序,中序,后序遍历以及使用队列实现二叉树的层次遍历

  • Java针对二叉树的几种遍历方式

    Java针对二叉树的几种遍历方式

  • 二叉树的递归遍历(java版)

    1. 场景需求 二叉树如图 java中利用递归实现二叉树的各种遍历 前序遍历 中序遍历 后序遍历 3.代码实现 3...

  • java中如何实现重建二叉树

    java中如何实现重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和...

网友评论

      本文标题:从上到下遍历二叉树-Java

      本文链接:https://www.haomeiwen.com/subject/cegjvftx.html