详细的代码可见github:
https://github.com/AbitGo/myClassWork/tree/master/workspace_ds
三种实现方式有递归的,非递归的,还有使用类似于层次遍历算法的。
详细代码实现:
//统计二叉树中结点个数的算法
//使用递归的方式
public int countNode1(BiTreeNode t) {
//使用递归算法
int count = 0;
if (t != null) {
++count;
count += countNode1(t.lchild);
count += countNode1(t.rchild);
}
return count;
}
//统计二叉树中结点个数的算法
//使用递归的方式
public int countNode2(BiTreeNode t) {
//使用递归算法
if (t == null) {
return 0;
} else {
return 1 + countNode2(t.lchild) + countNode2(t.rchild);
}
}
//统计二叉树中结点个数的算法
//使用非递归的方式
//类似于层次历遍
public int countNode3(BiTreeNode t) {
//使用递归算法
int count = 0;
if (t != null) {
LinkSqeue linkSqeue = new LinkSqeue();
linkSqeue.offer(t);
while (!linkSqeue.isEmpty()) {
t = (BiTreeNode) linkSqeue.poll();
++count;
if (t.lchild != null) {
linkSqeue.offer(t.lchild);
}
if (t.rchild != null) {
linkSqeue.offer(t.rchild);
}
}
}
return count;
}
二叉树节点计数算法

本文介绍并提供了三种不同的二叉树节点计数算法实现,包括递归和非递归方式,以及一种类似层次遍历的方法。这些算法在GitHub上的代码仓库中详细展示。
1697

被折叠的 条评论
为什么被折叠?



