import java.util.*;
class BinaryTreeNode{ private int entry; private BinaryTreeNode leftChild; private BinaryTreeNode rightChild; static int alt=0; static int neu=0; static ArrayList<Integer> liste = new ArrayList<Integer>(); public int getEntry(){ return entry; } public BinaryTreeNode getLeft(){ return leftChild; } public BinaryTreeNode getRight(){ return rightChild; } public void setEntry(int e){ entry=e; } public void setLeft(BinaryTreeNode e){ leftChild=e; } public void setRight(BinaryTreeNode e){ rightChild=e; } static public void inorder(BinaryTreeNode node){ if (node != null) { inorder(node.getLeft()); //System.out.println(node.getEntry()); liste.add(node.getEntry()); inorder(node.getRight()); } // end of if } static public boolean isSearchTree(BinaryTreeNode node){ int alt =0; int neu =0; inorder(node); for (Integer wert : liste ) { neu= wert; if (alt>neu) { return false; } // end of if System.out.println(wert); alt=neu; } // end of for return true; } static public boolean isSearchTree2(BinaryTreeNode node){ if (node == null) { return true; } if (isSearchTree2(node.getLeft())==false) return false; neu=node.getEntry(); System.out.println(node.getEntry()); if (alt>neu) return false; alt=neu; if (isSearchTree2(node.getRight())==false) return false; return true; } static public boolean isSearchTree3(BinaryTreeNode old, BinaryTreeNode node){ if (node == null) { return true; } if (isSearchTree3(old,node.getLeft())==false) return false; System.out.println(node.getEntry()); if (old.entry>node.entry) return false; old.entry=node.entry; if (isSearchTree3(old,node.getRight())==false) return false; return true; } static public int getMaximum(BinaryTreeNode node){ if (node==null) { return 0; } // end of if while (node.getRight()!= null) { node=node.getRight(); } // end of while return node.getEntry(); } public static void main(String[] args){ BinaryTreeNode root= new BinaryTreeNode(); root.setEntry(5); BinaryTreeNode neu= new BinaryTreeNode(); neu.setEntry(3); root.setLeft(neu); neu.setRight(new BinaryTreeNode()); neu.getRight().setEntry(4); neu= neu.getRight(); neu.setLeft(new BinaryTreeNode()); neu.getLeft().setEntry(4); neu.setRight(new BinaryTreeNode()); neu.getRight().setEntry(5); root.setRight(new BinaryTreeNode()); root.getRight().setEntry(7); //root=null; System.out.println(BinaryTreeNode.isSearchTree(root)); System.out.println(); System.out.println(BinaryTreeNode.isSearchTree2(root)); System.out.println(); BinaryTreeNode old = new BinaryTreeNode(); old.setEntry(0); System.out.println(BinaryTreeNode.isSearchTree3(old,root)); System.out.println(); //System.out.println(BinaryTreeNode.getMaximum(root)); } }