1. 节点个数

function getNodeNum(root){if(root == null){return 0;}//+1为root的计数return getNodeNum(root.left) + getNodeNum(root.right) + 1;
}

2. 叶子个数

function getLeafNum(root){if(root == null){return 0;}if(root.left == null && root.right == null){return 1;}return getLeafNum(root.left) + getLeafNum(root.right);
}

3. 第K层节点个数

//递归方法
function getLevelKNum(root,k){if(root == null || k < 1){return 0;}if(k == 1){return 1;}return getLevelKNum(root.left,k-1) + getLevelKNum(root.right,k-1);
}
//非递归方法,使用层次遍历,记录每层的节点个数,到达第K层时,返回节点个数
function getLevelKNum2(root,k){if(root == null){return;}var queue = [];var level = 1;queue.push(root);while(queue.length > 0){var levelSize = queue.length;if(level == k){return levelSize;}while(levelSize > 0){var node = queue.shift();if(node.left){queue.push(node.left)}if(node.right){queue.push(node.right)}levelSize--;}level++;    }return 0;
}

4. 二叉树的最低公共节点,判断节点在左右两侧,则根节点(可能为子树根)为最小公共节点,否则在左子树或右子树中递归查找公共节点

function getLastCommonParent(root,node1,node2){if(findNode(root.left,node1)){if(findNode(root.right,node2)){return root;}else{return getLastCommonParent(root.left,node1,node2);}}else{if(findNode(root.left,node2)){return root;}else{return getLastCommonParent(root.right,node1,node2);}}
}   function findNode(root,node){if(root == null || node == null){return false;}if(root == node){return true;}return findNode(root.left,node) || findNode(root.right,node);
}    

转载于:https://www.cnblogs.com/mengff/p/6870135.html

二叉树节点个数,叶子个数,第K层个数,最低公共节点相关推荐

  1. 二叉树的进阶操作---(求二叉树中所有结点个数,求叶子结点个数,求第k层结点个数;在二叉树中查找某一结点;层序遍历;判断是否为完全二叉树)

    typedef struct TreeNode {struct TreeNode *left;struct TreeNode *right;char val; }TreeNode;typedef st ...

  2. 求二叉树第K层节点个数(递归)

    下面是一个二叉树,我们需要求得第K层的节点个数. 代码: public class TestTree {static class Node {public char val;public Node l ...

  3. 求二叉树中第K层结点的个数

    一,问题描述 构建一棵二叉树(不一定是二叉查找树),求出该二叉树中第K层中的结点个数(根结点为第0层) 二,二叉树的构建 定义一个BinaryTree类来表示二叉树,二叉树BinaryTree 又是由 ...

  4. 求二叉树中结点个数代码java_求二叉树中第K层结点的个数

    一,问题描述 构建一棵二叉树(不一定是二叉查找树),求出该二叉树中第K层中的结点个数(根结点为第0层) 二,二叉树的构建 定义一个BinaryTree类来表示二叉树,二叉树BinaryTree 又是由 ...

  5. 由浅入深:求给定两个树节点的最低公共祖先(二叉树、普通树结构)JAVA实现

    最近看了一道面试题目,觉得很有意思,而且常常被问到,今天综合归纳了一下这道题目,并给出了各种变形题目,附上JAVA版的程序解答. 题目是这样的:寻找二叉树的最低公共祖先?(其中隐含着一个盲点:树是什么 ...

  6. C++实现二叉树相关问题(先序遍历,中序遍历,后序遍历,层序遍历,搜索二叉树、平衡二叉树、满二叉树、完全二叉树的判断,最低公共祖先,二叉树的序列化和反序列化)

    目录 题目一 二叉树递归和非递归遍历 题目二 如何完成二叉树的宽度(也叫层序)遍历(常见题目:求一棵二叉树的宽度) 题目四 如何判断一棵二叉树是搜索二叉树(BST)? 题目四 如何判断一棵二叉树是平衡 ...

  7. java中获取链表的第一个节点,两个链表中的第一个公共节点(java)

    题目描述: 输入两个链表,找出它们的第一个公共结点. 分析: 思路一:暴力解法,强烈不建议! 遍历第一个链表的每个节点,同时每次都遍历一遍另一个链表,看是否有节点和这个节点相同,如果有相同节点就是公共 ...

  8. 求二叉树第K层的节点个数+求二叉树叶子节点的个数

    size_t _FindLeafSize(Node* root)     //求二叉树叶子节点的个数     {         //static size_t count = 0;          ...

  9. 【数据结构】二叉树的节点总个数、叶子节点个数、第K层节点个数、二叉树的深度

    目录 1.结点总个数 1.1 局部静态变量法 思维 代码 不足之处 2.传指针法 程序代码 3.递归法 思想 程序代码 详细过程 2.叶子节点个数 思想 程序代码 3.第K层节点个数 思想 程序代码 ...

最新文章

  1. 深度 | 推荐系统评估
  2. spring包镜像下载地址
  3. syscall 系统调用陷入_linux 系统调用open 篇一
  4. Windows解决anaconda下双python版本安装TensorFlow
  5. Linux中cp和scp命令的使用方法和区别
  6. 后台拿webshell的方法总结
  7. 关于Java String对象创建问题解惑
  8. 自动化遍历-appcrawler
  9. 设计FMEA步骤五:风险分析
  10. itest(爱测试) 4.1.1 发布,开源BUG 跟踪管理 敏捷测试管理软件
  11. 贪心算法解决雷达站建站问题
  12. 南京大学计算机学院2019调剂,2019年南京大学考研调剂相关规定
  13. 台式计算机无线接入,台式计算机有线连接路由器WiFi方法图步骤,可以详细设置无线内容(...
  14. 中国撸串指北:13万家烧烤店的吃货最爱
  15. 如何通过Matplotlib画圆
  16. selenium 鼠标悬停事件
  17. 体重预测[线性回归]
  18. 长沙有哪些点餐系统服务商?长沙点菜软件哪家好?
  19. 如何用input函数一次输入多个值
  20. 两种实现模糊匹配的方法--python

热门文章

  1. 通过人与人的交互,反思软件系统与软件系统之间的集成交互问题
  2. 虽然有索引,但没有用上
  3. 【BZOJ】1706: [usaco2007 Nov]relays 奶牛接力跑
  4. JSP EL表达式详细介绍
  5. ***客户端出现“无法完成连接尝试”的解决方法
  6. SQLSERVER 游标
  7. 从市场的角度来看技术的学习
  8. 关于没有commit的死锁问题
  9. android 保存ArrayListObject至SharedPreferences
  10. WebKit Page对象的分析