作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是二叉树的初学者,一直在努力学习算法书。我了解了 BST 的各种遍历方法(前序、后序等)。
有人可以解释一下如何遍历 BST 来计算叶子节点(没有子节点)的数量吗?
非常感谢!
最佳答案
使用递归方法:
PHP 示例:
class BST {
public $left; // The substree containing the smaller entries
public $right; // The substree containing the larger entries
public $data; // The value that is stored in the node
}
function countLeafs(BST $b) {
// Test whether children exist ...
if ($b->left || $b->right) {
// ... yes, the left or the right child exists. It's not a leaf.
// Return the sum of calling countLeafs() on all children.
return ($b->left ? countLeafs($b->left) : 0)
+ ($b->right ? countLeafs($b->right) : 0);
} else {
// ... no, it's a leaf
return 1;
}
}
关于algorithm - 二叉树中的叶子数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19568800/
我是一名优秀的程序员,十分优秀!