重构方法参考文章【重构二叉树(Java实现):https://blog.csdn.net/wangbingcsu/article/details/51372695】
文章目录
- 二叉树类
- 三种遍历方式
- 前序遍历
- 中序遍历
- 后序遍历
- 两种重构方式
- 通过前序遍历中序遍历重构二叉树
- 通过后序遍历中序遍历重构二叉树
- 总代码
- 测试代码
二叉树类
这里我们创建一个二叉树的类,并为他添加一个插入的方法(左节点总是比父节点小,右节点总是比父节点大)
public class BinaryTree {
int data;
BinaryTree left;
BinaryTree right;
public BinaryTree(int data) {
this.data = data;
left = null;
right = null;
}
public void insert(BinaryTree root, int data) {//左节点总是比父节点小,右节点总是比父节点大
if (data > root.data) {
if (root.right == null) {
root.right = new BinaryTree(data);
} else {
this.insert(root.right, data);
}
} else {
if (root.left == null) {
root.left = new BinaryTree(data);
} else {
this.insert(root.left, data);
}
}
}
}
三种遍历方式
这三种遍历方式,相对的是根节点的遍历顺序。
前序遍历
1.访问根节点
2.前序遍历左子树
3.前序遍历右子树
public static void preOrder(BinaryTree root) {//前序遍历
if (root != null) {
System.out.print(root.data + ",");// 数据在同一行输出
preOrder(r