二叉树相关操作:构建、遍历、公共父节点等
import java.util.*;
//树节点类
class Node{
public int data;//节点的数值
public Node left;//左子节点
public Node right;//右子节点
public int leftMaxDistance;
public int rightMaxDistance;
//构造函数
public Node(){
}
public Node(int data){
this.data=data;
this.left=null;
this.right=null;
}
}
public class BinSortTree {
private Node root;//根节点
//构造函数
public BinSortTree(){
root=null;
}
/*
* 将数据插入到排序二叉树中—-->左子树数值小于根节点数值,右子树数值大于根节点数值
*/
public void insertData(int data){
Node newNode=new Node(data);
if(root==null)
root=newNode;
else{
Node current=root;
Node parent;
while(true){
parent=current;
//小于当前节点的值,应插入到左子树
if(data<current.data){
current=current.left;
if(current==null){
parent.left=newNode;//找到位置后,插入数据
return;//跳出循环,结束函数
}
}
//大于当前节点的值,应插入到右子树
else{
current=current.right;
if(current==null){
parent.right=newNode;
return;
}
}
}
}
}
//创建二叉排序树
public void buildTree(int[] data){
for (int i = 0; i < data.length; i++) {
insertData(data[i]);
}
}
//根据先序遍历结果和中序遍历结果构造二叉树(根节点数值唯一)
public static Node createBinaryTree(int[] preOrder,int