写了一个java二叉树,大家提提意见
import java.util.*;
public class BiTree {
private Object data;
private BiTree leftChild;
private BiTree rightChild;
public BiTree() {}
public BiTree(Object data) {
this.data = data;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public BiTree getLeftChild() {
return leftChild;
}
public void setLeftChild(BiTree bt) {
leftChild = bt;
}
public BiTree getRightChild() {
return rightChild;
}
public void setRightChild(BiTree bt) {
rightChild = bt;
}
// 先序二叉树字符串
public String toStringByPreOrder() {
StringBuffer result = new StringBuffer();
result.append(data);
result.append(" ");
result.append(leftChild == null ? "null " : leftChild.toStringByPreOrder());
result.append(rightChild == null ? "null " : rightChild.toStringByPreOrder());
return result.toString();
}
// 中序二叉树字符串
public String toStringByInOrder() {
StringBuffer result = new StringBuffer();
result.append(leftChild == null ? "null " : leftChild.toStringByInOrder());
result.append(data);
result.append(" ");
result.append(rightChild == null ? "null " : rightChild.toStringByInOrder());
return result.toString();
}
// 后序二叉树字符串
public String toStringByAfterOrder() {
StringBuffer result = new StringBuffer();
result.append(leftChild == null ? "null " : leftChild.toStringByAfterOrder());
result.append(rightChild == null ? "null " : rightChild.toStringByAfterOrder());
result.append(data);
result.append(" ");
return result.toString();
}
// 先序生成二叉树
public static BiTree createBiTreeByPreOrder(Iterator it) {
BiTree bt = null;
Object o = it.next();
if (o != null) {
bt = new BiTree(o);
bt.setLeftChild(createBiTreeByPreOrder(it));
bt.setRightChild(createBiTreeByPreOrder(it));
}
return bt;
}
// 中序生成二叉树
public static BiTree createBiTreeByInOrder(Iterator it) {
BiTree bt = null;
Object o = it.next();
if (o != null) {
bt = new BiTree();
bt.setLeftChild(createBiTreeByInOrder(it));
bt.setData(o);
bt.setRightChild(createBiTreeByInOrder(it));
}
return bt;
}
// 后序生成二叉树
public static BiTree createBiTreeByAfterOrder(Iterator it) {
BiTree bt = null;
Object o = it.next();
if (o != null) {
bt = new BiTree();
bt.setLeftChild(createBiTreeByAfterOrder(it));
bt.setRightChild(createBiTreeByAfterOrder(it));
bt.setData(o);
}
return bt;
}
public static void main(String[] args) {
System.out.println("-------------------- bt ---------------------");
BiTree bt = new BiTree("A");
bt.setLeftChild(new BiTree("B"));
bt.setRightChild(new BiTree("C"));
System.out.println("pre order : " + bt.toStringByPreOrder());
System.out.println("in order : " + bt.toStringByInOrder());
System.out.println("after order : " + bt.toStringByAfterOrder());
System.out.println("-------------------- bt2 ---------------------");
BiTree bt2 = null;
Object[] sequence = new Object[] {
"A", "B", "C", null, null, "D", "E", null,
"G", null, null, "F", null, null, null };
List l = Arrays.asList(sequence);
System.out.println("sequence : " + l);
bt2 = createBiTreeByPreOrder(l.iterator());
System.out.println("pre order : " + bt2.toStringByPreOrder());
bt2 = createBiTreeByInOrder(l.iterator());
System.out.println("in order : " + bt2.toStringByInOrder());
bt2 = createBiTreeByAfterOrder(l.iterator());
System.out.println("after order : " + bt2.toStringByAfterOrder());
}
}
相关推荐
Java创建二叉树的3种方式
Java实现二叉树的3种方式,顺序二叉树的实现,二叉树的三叉链表存储,二叉树的二叉链表实现
Java实现打印二叉树所有路径的方法
主要介绍了Java实现打印二叉树所有路径的方法,涉及java二叉树遍历与运算相关操作技巧,需要的朋友可以参考下
java二叉树
我用毕生功力写出的强大算法。无私奉献给大家。
【java 数据结构】还不会二叉树?一篇搞定二叉树
二叉树是我们常见的数据结构之一,在学习二叉树之前我们需要知道什么是树,什么是二叉树,本篇主要讲述了二叉树,以及二叉树的遍历。 你能get到的知识点? 1、树的介绍 2、二叉树的介绍 3、二叉树遍历的四种方法 4、牛客题目:反转二叉树 文章目录你能get到的知识点?一、知识预备1、树2、树的相关术语介绍1、二叉树2、二叉树类型二、二叉树实操(我没有说脏话)1、定义二叉树的结点2、遍历二叉树(四种方法)三、小试牛刀leetcode题目:反转二叉树 一、知识预备 1、树 树(Tree)是n(n>=0)个结点的有限集。 数据结构中的树可以看作一个倒立的树,他的‘根’在上面,他的’叶子’在下面。 2、
[力扣]144. 二叉树的前序遍历java
二叉树的前序遍历 给定一个二叉树,返回它的前序遍历 示例: 思路 前序遍历1.先访问根节点,把元素加入到List中; 2.递归遍历左子树,把左子树的遍历结果加入到List中; 3.递归遍历右子树,把右子树的遍历结果加入到List中。 4.返回 代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */


