接着前面的小节,讲二叉树的复制和二叉树的元素个数统计。
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.
人若无友,犹如只有生命没有太阳。
转载于:https://blog.51cto.com/2008jiangning/1311240