递归--二叉树遍历,求深度,求二叉树节点个数
2017-08-30 16:51
561 查看
本文为递归实现二叉树的各种操作。
二叉树的前序遍历:(根--左--右)
二叉树的后序遍历:(左--右--根)
二叉树层次遍历:(从上到下,从左到右)
思想:利用队列实现,在访问二叉树某一层节点时,把下一层的节点指针预先记忆在队列中,利用队列安排逐层访问的顺序。
思想:分别找出左右子树的高度,找出最大的+1。递归实现
思想:分别计算左右子树的节点个数,相加后在+1.递归实现
二叉树的前序遍历:(根--左--右)
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; else return 1 + Math.max(heigh(tree.left),heigh(tree.right)); }求二叉树节点个数:
思想:分别计算左右子树的节点个数,相加后在+1.递归实现
public static int size(TreeNode tree){ if(tree == null) return 0; else return 1 + size(tree.left) + size(tree.right); }
相关文章推荐
- 二叉树系列(建树,前序,中序,后序,中序非递归,深度,叶子数,节点数)
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 二叉树的创建,遍历,查找,查找父节点,深度,大小等的递归实现
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 2013-03-17---二叉树递归,非递归实现(附代码)深度,叶子节点数量,逐行打印二叉树
- 二叉树的节点个数和深度(非递归)
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- c语言实现二叉树先序,中序,后序(递归),层次遍历,求叶子节点个数及树的深度,下一篇写非递归的遍历
- 二叉树非递归求深度和节点个数
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 二叉树,递归、非递归遍历,求深度,输出叶子节点
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 二叉树叶子节点遍历---递归与非递归方法求取树深度
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 二叉树的前、中、后序遍历(递归和非递归)、层序遍历、深度、叶子节点个数