import java.util.ArrayList; import java.util.List; import java.util.Stack; /** * * @author zhongchenghui */ public class BTreeTraversal { public static void main(String[] args) { Node root = new Node("a"); Node b = new Node("b"); Node c = new Node("c"); root.setLeft(b); root.setRight(c); Node d = new Node("d"); Node e = new Node("e"); b.setLeft(d); b.setRight(e); Node f = new Node("f"); c.setLeft(f); Node g = new Node("g"); Node h = new Node("h"); d.setLeft(g); d.setRight(h); Node i = new Node("i"); Node j = new Node("j"); f.setLeft(i); f.setRight(j); Node k = new Node("k"); Node l = new Node("l"); j.setLeft(k); j.setRight(l); traversal(root); } public static void traversal(Node root) { List<Node> result = new ArrayList<>(); boolean status = true; Stack<Node> layerNodes = new Stack<>(); layerNodes.add(root); while (layerNodes.size() > 0) { result.addAll(layerNodes); layerNodes = getNextLayer(layerNodes, status); status = !status; } System.out.println(result); } public static Stack<Node> getNextLayer(Stack<Node> stack, boolean status) { Stack<Node> layerNodes = new Stack(); while (stack.size() > 0) { Node node = stack.pop(); if (status) { if (node.right != null) { layerNodes.add(node.right); } if (node.left != null) { layerNodes.add(node.left); } } else { if (node.left != null) { layerNodes.add(node.left); } if (node.right != null) { layerNodes.add(node.right); } } } return layerNodes; } }
public class Node { String value; Node left; Node right; public Node(String value) { this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public Node getLeft() { return left; } public void setLeft(Node left) { this.left = left; } public Node getRight() { return right; } public void setRight(Node right) { this.right = right; } @Override public String toString() { return "Node{" + "value=" + value + '}'; } }
相关推荐
先序中序后序三种方法遍历一棵二叉树 先序 后序 中序 先序输入 二叉树
第一行:二叉树的先序遍历结果 第二行:二叉树的中序遍历结果 例如: ①输入aa则返回的指针指向的二叉树应该就是仅有一个节点,值为a. ②输入123213则返回的指针指向的二叉树应该就是,根节点(1),左子树只有一...
3.使用递归 先序遍历一棵二叉树 4.使用递归 中序遍历一棵二叉树 5.使用递归 后序遍历一棵二叉树 6.使用非递归 先序遍历一棵二叉树 7.使用非递归 中序遍历一棵二叉树 8.使用非递归 后序遍历一棵二叉树 PS:代码为C++...
二叉树的遍历C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历...
逐层遍历二叉树的结点~~~~~~~~~
创建一棵二叉树,分别实现先序、中序和后序遍历一棵二叉树,计算二叉树结点个数等操作。 1.建立二叉树方法1 2.建立二叉树方法2 3.先序递归遍历二叉树 4.中序递归遍历二叉树 5.后序递归遍历二叉树 6.层次遍历...
由中序和先序序列恢复二叉树 由中序和后序序列恢复二叉树
遍历二叉树 遍历二叉树的先序、中序和非递归遍历二叉树的六种算法
二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历二叉树遍历...
本程序提供了二叉树的各种操作:各种遍历,复制,求高度,判断是否为一棵完全二叉树以及计算用二叉树存储的表达式
定义二叉树的结点结构 实现先序序列构造二叉树的算法 实现先序遍历这棵二叉树,输出每个结点的值的算法 利用先序遍历,统计叶子结点的个数 利用后序遍历,求二叉树的深度
1.建立完全二叉树 2.先序非递归遍历二叉树函数 & 先序递归遍历二叉树验证 3.中序非递归遍历二叉树函数 & 中序递归遍历二叉树验证 4.后序非递归遍历二叉树函数 & 后序递归遍历二叉树验证
二叉树的遍历二叉树的遍历二叉树的遍历二叉树的遍历二叉树的遍历
二叉树的遍历,全部用递归实现,很有规律! 二叉树的遍历,全部用递归实现,很有规律
用java实现二叉树遍历 包括先序,中序,后序 后续是自己写的算法 可以运行
我们数据结构的实验,给定二叉树的中序序列和先序序列,以确定二叉树。我用VC++做了个简单的画图,可以看到树的样子。 我们数据结构课程已经结课了,我准备做出一个关于“图论”的一个演示系统GraphSystem,使书上...
实现二叉树的层次遍历实现二叉树的层次遍历实现二叉树的层次遍历实现二叉树的层次遍历
二叉树遍历算法二叉树遍历算法二叉树遍历算法二叉树遍历算法二叉树遍历算法二叉树遍历算法