二叉树节点个数,叶子个数,第K层个数,最低公共节点
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); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2016-05-17 sublime text快捷键
2016-05-17 Mac按键