根据如下结构写出自定义二叉树的树形结构
一、结构
二、分析并实现
1.分析
将整个树结构分为两部分进行实现:
①第一部分是父节点和两个子节点
②针对于树的对象 实行添加元素
2.实现部分①
Ⅰ.构建属性
public Integer data;//节点中的数据
public Node leftNode;//左节点
public Node rightNode;//右节点
Ⅱ.判断父子结构并选择添加位置
public void addNode(Node t){
// 往左边节点添加
if(t.data <this.data){
if(leftNode == null){
leftNode = t;
}else{
//递归
leftNode.addNode(t);
}
}else{
// 往右边节点添加
if(rightNode == null){
rightNode = t;
}else{
rightNode.addNode(t);
}
}
}
Ⅲ.选择对树结构进行中序排序
public void zhongxu(){
if(leftNode!=null) leftNode.zhongxu();
System.out.println(data);
if(rightNode!=null) rightNode.zhongxu();
}
3.实现部分②
Ⅰ.构建属性
在这里针对于树的对象 添加的是元素
private Node root;
Ⅱ.选择部分①的排序方法
public void sort(){
if(root == null) return;
root.zhongxu();
}
三、分析并测试
测试部分:
public static void main(String[] args) {
MyTree tree = new MyTree();
tree.add(7);
tree.add(2);
tree.add(10);
tree.add(5);
tree.add(99);
tree.add(1);
tree.add(66);
tree.add(0);
tree.add(55);
tree.sort();
}
实现部分:
public class MyTree {
private Node root;
// 针对于树的对象 添加的是元素
public void add(int x){
Node p = new Node();
p.data = x;
if(root == null){
root = p;
}else{
root.addNode(p);
}
}
//排序
public void sort(){
if(root == null) return;
root.zhongxu();
}
}
public class Node {
//属性
public Integer data;//节点中的数据
public Node leftNode;//左节点
public Node rightNode;//右节点
//方法
public void addNode(Node t){
// 往左边节点添加
if(t.data <this.data){
if(leftNode == null){
leftNode = t;
}else{
//递归
leftNode.addNode(t);
}
}else{
// 往右边节点添加
if(rightNode == null){
rightNode = t;
}else{
rightNode.addNode(t);
}
}
}
//中序
public void zhongxu(){
if(leftNode!=null) leftNode.zhongxu();
System.out.println(data);
if(rightNode!=null) rightNode.zhongxu();
}
}
测试结果:
四、前序和后序的实现(上面为中序,替换部分①的排序方法)
1.前序
public void qianxu(){
System.out.println(data);
if(leftNode!=null) leftNode.zhongxu();
if(rightNode!=null) rightNode.zhongxu();
2.后序
public void houxu(){
if(leftNode!=null) leftNode.zhongxu();
if(rightNode!=null) rightNode.zhongxu();
System.out.println(data);