获取二叉树叶子节点个数的递归及非递归算法
来源:互联网 发布:淘宝买家秀怎么发微淘 编辑:程序博客网 时间:2024/04/30 18:35
递归算法
public static<T> int numOfLeavesInRecursion(BinaryTreeNode<T> root){ // 获取二叉树叶子节点的个数的递归算法 if(root == null) return 0; if(root.getLeft() == null && root.getRight() == null) return 1; return numOfLeavesInRecursion(root.getLeft()) + numOfLeavesInRecursion(root.getRight()); }
非递归算法
将层次遍历稍微修改一下即可:
public static<T> int numOfLeaves(BinaryTreeNode<T> root){ // 获取二叉树叶子节点的个数的非递归算法 if(root == null) return 0; DynArrayQueue<BinaryTreeNode<T>> queue = new DynArrayQueue<>(); queue.enQueue(root); int count = 0; while(!queue.isEmpty()){ root = queue.deQueue(); if(root.getLeft() == null && root.getRight() == null){ count++; } else { if(root.getLeft() != null) queue.enQueue(root.getLeft()); if(root.getRight() != null) queue.enQueue(root.getRight()); } } return count; }
完整代码可以访问我的GitHub:https://github.com/StriverLi/Data-Structures-and-Algorithms-in-Java/blob/master/src/tree/BinaryTreeNode.java
2 0
- 获取二叉树叶子节点个数的递归及非递归算法
- 递归和非递归实现计算二叉树叶子节点的个数
- 二叉树(7)----求二叉树叶子节点个数,递归和非递归
- 二叉树叶子节点个数计算 -- 采用递归和非递归方法实现
- 求二叉树叶子节点的个数/求二叉树第k层的节点个数(递归思想)
- 二叉树中叶子节点的个数(非递归)
- 二叉树叶子节点遍历---递归与非递归方法求取树深度
- 二叉树叶子节点个数的计算
- 完全二叉树叶子节点的个数
- 统计二叉树叶子节点的个数
- 求二叉树叶子节点的个数
- 求二叉树叶子节点的个数
- 完全二叉树叶子节点的个数
- 求二叉树叶子节点数目的中序遍历递归算法(已经在visual c++ 6.0中调试通过)
- 二叉树的节点个数和深度(非递归)
- 二叉树中叶子节点的个数(递归)
- 编写递归算法 计算二叉树中叶子节点的个数
- 经典算法学习——求二叉树叶子节点的个数
- 集成新浪微博分享混淆
- js基础 one
- List<?>和List<T>的区别?即类型参数“<T>”和无界通配符“<?>”的区别
- 哈哈,我的博客竟然会有粉丝
- slf4j 和 log4j合用的(Maven)配置
- 获取二叉树叶子节点个数的递归及非递归算法
- 选拔赛之dp
- QPallete
- Mac: Alias[设置命令的别名]
- Android hander实现异步线程队列化
- 数据库基础知识_1
- memcached的深度解析
- node命令
- App开放接口api安全性—Token签名sign的设计与实现