判断叶子结点的个数
来源:互联网 发布:美发修改软件 编辑:程序博客网 时间:2024/04/29 00:33
template <class T>struct BinaryTreeNode//定义二叉树的节点{ BinaryTreeNode(const T& value) :_value(value) ,_pLeft(NULL) ,_pRight(NULL) {} T _value; BinaryTreeNode<T>* _pLeft; BinaryTreeNode<T>* _pRight;};template<class T>class BinaryTree//定义二叉树{ typedef BinaryTreeNode<T> Node;public: BinaryTree() :_pRoot(NULL) {}private: Node* _pRoot;//根节点};
要知道一棵二叉树中叶子结点的个数,首先知道什么是叶子结点。
叶子结点:
左子树和右子树都为空的节点,所以是&&的关系。
下面使用递归遍历这棵树,其
返回值 = 左子树中叶子结点的个数 + 右子树中叶子结点的个数。
public: size_t GetLeefCount() { return _GetLeefCount(_pRoot); }private: size_t _GetLeefCount(Node* pRoot) { if(pRoot == NULL) return 0; if(pRoot->_pLeft == NULL && pRoot->_pRight == NULL) return 1; return _GetLeefCount(pRoot->_pLeft) + _GetLeefCount(pRoot->_pRight); }
查找第K层中,结点的个数:
用递归的方法遍历这棵树,递归出口就是:
当前节点为空或K<1或K>树的深度。任何一个条件成立都可以,是 || 的关系。
public: size_t GetKLevelCount(size_t k) { return _GetKLevelCount(_pRoot, k); }private: size_t _GetKLevelCount(Node* pRoot, size_t k) { if(pRoot == NULL || k<1 || k>_BinaryTreeDepth(pRoot)) return 0; if(k == 1) return 1; return _GetKLevelCount(pRoot->_pLeft, k-1) + _GetKLevelCount(pRoot->_pRight, k-1); }
0 0
- 判断叶子结点的个数
- 求树的叶子结点的个数
- 求叶子结点个数
- 求二叉树的叶子结点个数及深度
- 7-1 求二叉树的叶子结点个数
- 树的度,度中结点的个数 叶子节点的个数关系
- 求二叉树的高度,叶子节点个数,第K层结点个数,求祖先结点问题
- 二叉树的基本操作精集(创建、遍历、求深度结点以及叶子结点个数)
- 二叉树的一些基本操作(括号表示法,宽度,深度,结点个数,叶子节点个数)
- 叶子结点
- 求树的叶子个数
- 求树的叶子个数
- 二叉树先序后序递归建立,前中后序层次非递归遍历,以及统计叶子结点个数以及树的深度
- 求二叉树的叶子结点数
- 查询树的所有叶子结点
- 打印从根结点到叶子结点的路径(递归)
- 打印二叉树根结点到所有叶子结点的路径
- 根结点到所有叶子结点的路径问题
- Webpack 入门指南
- org.apache.hadoop.io.compress系列1-认识解码器/编码器
- 仿ASSISTIVETOUCH效果的浮动层小球
- maven笔记
- WPF AdornerLayer.GetAdornerLayer返回null
- 判断叶子结点的个数
- sqlserver中如何以IP+端口号的方式连接到局域网数据库
- 文本和输入:创建一个IME:图像键盘支持
- 防止SQL注入的五种方法
- maybaiti总结
- laravel框架与其他框架的对比
- java 后端简历怎么写
- 关于Qt无法直接使用cout和cin的问题
- 读《深入jvm原理》之class文件