接着前面的小节,讲二叉树的复制和二叉树的元素个数统计。


1.复制树

1)静态方法,是因为有可能当前树为null,这样用静态方法不会报错。
2)将源数据树作为参数,如果要复制的树为null,则直接返回null。
3)如果复制的树不为null,需要将树的左结点和右结点链接进行复制。所以需要两个临时变量指向左右节点的复制:leftCopy和rightCopy,返回根节点,所有需要创建一个BTNode对象。
public static <E> BTNode<E> treeCopy(BTNode<E> source){
      BTNode<E> leftCopy,rightCopy;
       if(source == null){
             return null ;
      } else{
            leftCopy = treeCopy(source.left);
            rightCopy = treeCopy(source.right);
             return new BTNode<E>(source.data, leftCopy, rightCopy);
      }
}

2.树的元素个数
1)如果树为null则直接返回0.
2)如果树不为null,则元素个数需要+1,然后进行左子树和右子树的遍历,将左子树和右子树的节点个数和再加上根节点1就是总共节点个数。
public static <E> long treeSize(BTNode<E> root){
       if(root == null){
             return 0;
      } else{
             return 1 + treeSize(root. left) + treeSize(root. right);
      }
}


下一个节介绍,二叉树的遍历:前序遍历、中序遍历、后序遍历。


A life without a friend is a life without a sun.

人若无友,犹如只有生命没有太阳。