递归--二叉树遍历,求深度,求二叉树节点个数
来源:互联网 发布:淘宝店铺首页1200 编辑:程序博客网 时间:2024/05/29 16:16
本文为递归实现二叉树的各种操作。
二叉树的前序遍历:(根--左--右)
public static void PreOrder(TreeNode tree){if(tree != null){System.out.print(tree.val);PreOrder(tree.left);PreOrder(tree.right);}}二叉树的中序遍历:(左--根--右)
public static void InOrder(TreeNode tree){if(tree != null){InOrder(tree.left);System.out.print(tree.val);InOrder(tree.right);}}
二叉树的后序遍历:(左--右--根)
public static void PostOrder(TreeNode tree){if(tree != null){PostOrder(tree.left);PostOrder(tree.right);System.out.print(tree.val);}}
二叉树层次遍历:(从上到下,从左到右)
思想:利用队列实现,在访问二叉树某一层节点时,把下一层的节点指针预先记忆在队列中,利用队列安排逐层访问的顺序。
public static void LevelOrder(TreeNode tree){TreeNode p = null;Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.add(tree);while(!queue.isEmpty()){p = queue.poll();System.out.print(p.val);if(p.left != null)queue.add(p.left);if(p.right != null)queue.add(p.right);}}求二叉树的高度:
思想:分别找出左右子树的高度,找出最大的+1。递归实现
public static int heigh(TreeNode tree){if(tree == null)return 0;elsereturn 1 + Math.max(heigh(tree.left),heigh(tree.right));}求二叉树节点个数:
思想:分别计算左右子树的节点个数,相加后在+1.递归实现
public static int size(TreeNode tree){if(tree == null)return 0;elsereturn 1 + size(tree.left) + size(tree.right);}
阅读全文
1 0
- 递归--二叉树遍历,求深度,求二叉树节点个数
- 二叉树非递归求深度和节点个数
- 求二叉树的高,节点个数,遍历二叉树
- 二叉树,递归、非递归遍历,求深度,输出叶子节点
- c语言实现二叉树先序,中序,后序(递归),层次遍历,求叶子节点个数及树的深度,下一篇写非递归的遍历
- C++算法之 求二叉树的节点个数、深度、四种遍历方法
- C++算法之 求二叉树的节点个数、深度、四种遍历方法
- 二叉树的遍历,递归和非递归,求深度
- 6_42_二叉树递归求叶子节点个数
- 二叉树遍历及查找、统计个数、比较、求深度的递归实现
- 二叉树的非递归遍历&求深度
- 二叉树创建,遍历,求深度详解(递归方法)
- 递归实现二叉树遍历以及求最大深度
- 求二叉树叶子节点的个数/求二叉树第k层的节点个数(递归思想)
- 二叉树(7)----求二叉树叶子节点个数,递归和非递归
- 二叉树递归、非递归求深度
- 完全二叉树求叶子节点个数
- 创建二叉树求叶子节点个数
- Golong学习之包管理的探索与实践
- hadoop搭建过程中设置NTP时间服务器
- 矩阵分解(MF,SVD)和协同过滤(CF)
- eclipse导入JDK源码
- 搭建ELK日志分析系统(二)-elasticsearch-head插件安装
- 递归--二叉树遍历,求深度,求二叉树节点个数
- lspci | grep -i raid查询系统的raid卡信息
- ref与out之间的区别整理
- raspberry pi安装MySql无法登陆问题
- Robot Framework String库的常用方法
- 用oracle数据库做一份课表
- String、StringBuffer与StringBuilder之间区别
- java html转word!
- OC : NSFileHandle (文件内容操作)