一个二叉树由根结点,根结点的左子树和根结点的右子树三部分组成。因此,只要依次访问这三个部分,就可以访问所有结点。
–>二叉树查找
Node<T> search(Node<T> node,T x){
if(node==null){
return null;
}else{
if(node.lChild.getData().equals(x)||node.rChild.getData().equals(x)){
return node;
}else{
Node<T> s=search(node.lChild,x);
if(s!=null){
return s;
}else{
return node.rChild;
}
}
}
}
–>中序遍历
void inOrder(Node<T> node){
if(node==null){
return ;
}else{
inOrder(node.lChild);
System.out.print(node.getData());
inOrder(node.rChild);
}
}
–>统计结点数
int count(Node<T> node){
int lc=0,rc=0,sum=0;
if(node!=null){
lc=count(node.lChild);
rc=count(node.rChild);
sum=lc+rc;
return sum+1;
}else{
return 0;
}
}
–主函数
public static void main(String[] args) {
BinaryTree<Character> tree=new BinaryTree<Character>('A');
tree.insertLeft('B', tree.root);
tree.insertLeft('D', tree.root.lChild);
tree.insertLeft('H', tree.root.lChild.lChild);
tree.insertRight('E', tree.root.lChild);
tree.insertRight('C', tree.root);
tree.insertLeft('F', tree.root.rChild);
tree.insertRight('G', tree.root.rChild);
System.out.println("中序遍历二叉树:");
tree.inOrder(tree.root);
System.out.println("结点总数:");
System.out.println(tree.count(tree.root));
System.out.println("查找结点:");
System.out.println(tree.search(tree.root, 'C'));
}
执行结果