public class TreeNode {
private int num;
private String name;
private TreeNode left;
private TreeNode right;
public TreeNode(int num, String name) {
this.num = num;
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
@Override
public String toString() {
return "TreeNode{" +
"num=" + num +
", name='" + name + '\'' +
'}';
}
}
public class BinaryTree2 {
public static void main(String[] args) {
TreeNode node1 = new TreeNode(1, "节点1");
TreeNode node2 = new TreeNode(2, "节点2");
TreeNode node3 = new TreeNode(3, "节点3");
TreeNode node4 = new TreeNode(4, "节点4");
TreeNode node5 = new TreeNode(5, "节点5");
TreeNode node6 = new TreeNode(6, "节点6");
node1.setLeft(node2);
node1.setRight(node3);
node2.setLeft(node4);
node2.setRight(node5);
System.out.println(proSearch(node1,node4));
System.out.println(infixSearch(node1,node3));
System.out.println(postSearch(node1,node6));
}
public static TreeNode proSearch(TreeNode node, TreeNode findnode) {
if (node == findnode) {
return node;
}
TreeNode res = null;
if (node.getLeft()!=null){
res = proSearch(node.getLeft(),findnode);
}
if (res !=null){
return res;
}
if (node.getRight()!=null){
res = proSearch(node.getRight(),findnode);
}
return res;
}
public static TreeNode infixSearch(TreeNode node, TreeNode findnode) {
TreeNode res = null;
if (node.getLeft()!=null){
res = infixSearch(node.getLeft(),findnode);
}
if (res !=null){
return res;
}
if (node == findnode) {
return node;
}
if (node.getRight()!=null){
res =infixSearch(node.getRight(),findnode);
}
return res;
}
public static TreeNode postSearch(TreeNode node, TreeNode findnode) {
TreeNode res = null;
if (node.getRight()!=null){
res = postSearch(node.getRight(),findnode);
}
if (res !=null){
return res;
}
if (node == findnode) {
return node;
}
if (node.getLeft()!=null){
res = postSearch(node.getLeft(),findnode);
}
return res;
}
}