二叉树中叶子节点的个数第K层的节点个数
2017-07-29 22:13
197 查看
叶子节点的个数
size_t _GetLeefNode(Node *pRoot) { if (pRoot == NULL) return 0; if (NULL == pRoot->pLeft&&NULL == pRoot->pRight) return 1; return _GetLeefNode(pRoot->pLeft) + _GetLeefNode(pRoot->pRight); }
第K层节点的个数
size_t _Height(Node *pRoot) { if (NULL==pRoot) return 0; size_t highLeft = 1+_Height(pRoot->pLeft); size_t highRight = 1+_Height(pRoot->pRight); return highLeft > highRight ? highLeft : highRight; } int GetKLevelNode(int k) { if (k<0 || k>_Height(_pRoot)) return -1; return _GetKLevelNode(_pRoot, k); } int _GetKLevelNode(Node *pRoot, int k) { if (nullptr == pRoot) return 0; if (k == 1 ) return 1; return _GetKLevelNode(pRoot->_pLeft, k-1)+_GetKLevelNode(pRoot->_pRight, k-1); }
一个数组中有一个数字的次数超过了数组的一半,求出这个字符。
//如:int a[]={2,3,2,2,2,2,2,5,4,1,2,3},求出超过一半的数字是2 #include<iostream> using namespace std; int partion(int *arr, int left, int right) { int begin = left; int end = right; int key = arr[begin]; while (begin < end) { //注意快排从如果左边选比较值,则应从右边开始比较 while (begin < end&&arr[begin] >= key) --end; while (begin < end&&arr[begin] <= key) ++begin; swap(arr[begin], arr[end]); } swap(arr[left], arr[begin]); return begin; } int getNum(int *arr, int len) { if (nullptr == arr || len <= 0) return -1; int start = 0; int end = len - 1; int mid = start+(end-start)>>1; int index = partion(arr, 0, end); while (index != mid) { if (mid > index) { start = index +1; index = partion(arr, start, end); } else { end = index -1; index = partion(arr, start, end); } } return arr[index]; } int main() { int arr[] = { 2, 3, 2, 2,2, 2, 5, 4, 1, 2, 3 }; int len = sizeof(arr) / sizeof(arr[0]); int res = getNum(arr, len); cout << res << endl; system("pause"); }
相关文章推荐
- 二叉树:输出根节点到叶子的路径
- 二叉树 删除所有叶子节点
- 输出二叉树叶子节点、叶子节点数目、二叉树高度
- Java二叉树的递归,非递归遍历,高度,节点数,叶子节点数
- 二叉树的递归实现(前序,中序,后序,层序,高度,叶子节点数,第k层节点数)
- 二叉树中根到叶子路径中节点和等于给定值的路径
- 给定一个二叉树,从左到右,找出第 k 个叶子节点 [# 65]
- 删除二叉树所有叶子节点---将叶子节点都是设置为0
- 二叉树中根到叶子路径中节点和等于给定值的路径
- 六:二叉树中第k层节点个数与二叉树叶子节点个数
- 二叉树3(统计二叉树中叶子节点的个数)
- 求二叉树的节点个数、叶子节点个数、第k层的节点个数
- (二叉搜索树10.1.2)POJ 1577 Falling Leaves(根据删除叶子节点的顺序输出计算一颗二叉树的前序遍历序列)
- 二叉树之统计叶子节点
- 二叉树的一些基本操作(括号表示法,宽度,深度,结点个数,叶子节点个数)
- 【数据结构】二叉树的实现(如:默认成员函数、(叶子)节点数、深度、四种遍历)
- 编写递归算法 计算二叉树中叶子节点的个数
- 求二叉树叶子节点的个数和第k层的节点个数【每日一题】
- 求二叉树叶子节点的个数/求二叉树第k层的节点个数/一个数组中有一个数字的次数超过了数组的一半,求出这个字符
- 二叉树的节点数和二叉树的叶子节点书和二叉树的深度