二叉树遍历,三种方法
来源:互联网 发布:ant java jar 编辑:程序博客网 时间:2024/05/16 06:11
package acm.result.test1;
/**
* @author BTiger
*
*/
public class Main {
/**
* 二叉树遍历,三种方法
*
* @param args
*/
public static void main(String[] args) {
Tree tree = getTree();
Node root = tree.getRoot();
// 先根遍历
System.out.println("先根遍历");
rootFirst(root);
System.out.println();
// 中根遍历
System.out.println("中根遍历");
middleFirst(root);
System.out.println();
// 后根遍历
System.out.println("后根遍历");
rootLast(root);
}
/**
* 先根遍历
*
* @param root
*/
private static void rootFirst(Node root) {
System.out.print(root.getData()+" ");// 打印根节点
if (root.getLeftNode() != null) {// 打印左节点
rootFirst(root.getLeftNode());
}
if (root.getRightNode() != null) {// 打印右节点
rootFirst(root.getRightNode());
}
}
/**
* 中根遍历
*
* @param root
*/
private static void middleFirst(Node root) {
if (root.getLeftNode() != null) {// 打印左节点
middleFirst(root.getLeftNode());
}
System.out.print(root.getData()+" ");// 打印根节点
if (root.getRightNode() != null) {// 打印右节点
middleFirst(root.getRightNode());
}
}
/**
* 后根遍历
*
* @param root
*/
private static void rootLast(Node root) {
if (root.getLeftNode() != null) {// 打印左节点
rootLast(root.getLeftNode());
}
if (root.getRightNode() != null) {// 打印右节点
rootLast(root.getRightNode());
}
System.out.print(root.getData()+" ");// 打印根节点
}
/**
* 构造二叉树
*
* @return
*/
private static Tree getTree() {
Node root = new Node();
Node b = new Node();
Node c = new Node();
Node d = new Node();
Node e = new Node();
Node f = new Node();
Node g = new Node();
Node h = new Node();
root.setData("A");
b.setData("B");
c.setData("C");
d.setData("D");
e.setData("E");
f.setData("f");
g.setData("G");
h.setData("H");
root.setLeftNode(b);
root.setRightNode(c);
b.setLeftNode(d);
d.setRightNode(g);
c.setLeftNode(e);
c.setRightNode(f);
f.setLeftNode(h);
Tree tree = new Tree();
tree.setRoot(root);
return tree;
}
}
class Tree {
public Node root = null;
public Node getRoot() {
return root;
}
public void setRoot(Node root) {
this.root = root;
}
public boolean isEmpty() {
return this.root == null;
}
}
class Node {
public String data;
public Node leftNode = null, rightNode = null;
public boolean isLeaf() {
return this.leftNode == null && this.rightNode == null;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Node getLeftNode() {
return leftNode;
}
public void setLeftNode(Node leftNode) {
this.leftNode = leftNode;
}
public Node getRightNode() {
return rightNode;
}
public void setRightNode(Node rightNode) {
this.rightNode = rightNode;
}
}
- 二叉树遍历,三种方法
- 二叉树的三种遍历方法
- 遍历二叉树的三种方法
- 二叉树的三种遍历方法
- 二叉树操作之三种遍历方法
- 二叉树初始化及三种遍历方法
- 层次遍历二叉树-三种不同的方法
- 数据结构 二叉树的建立及三种遍历方法
- 层次遍历二叉树-三种不同的方法
- 二叉树的三种遍历方法(递归)
- 二叉树的前序遍历三种方法
- 二叉树的三种遍历方法(转载)
- 层次遍历二叉树-三种不同的方法
- 层次遍历二叉树-三种不同的方法
- 二叉树中序遍历的三种方法
- 二叉树前序遍历的三种方法
- java实现二叉树的构建以及三种遍历方法(先序遍历,中序遍历,后续遍历)
- C#实现二叉树(三元素式)及二叉树遍历的四种方法
- 记录一些有用的快捷键
- ARM汇编指令:.align理解和用法
- Android学习札记2:滑动开关的实现
- U-boot中TFTP 解释
- JS跨域请求
- 二叉树遍历,三种方法
- Android Recovery模式
- ios 进度条
- 从A表更新数据到B表
- shell常用编程及实例-持续更新中
- 项目发开过程中应该写哪些文档
- 中文乱码
- AJAx 常见概念小结
- win7下关闭 最大化最小化时候的动画