一段代码让你理解二叉树的递归奥秘
2013-12-23 10:21
337 查看
class TreeNode { TreeNode left; TreeNode right; int val; TreeNode(int val){ this.val=val; } static void scanNodes(TreeNode root){ if(root!=null){ System.out.println("this is node :"+root.val); //先序遍历 scanNodes(root.left); System.out.println("node"+root.val+" finish scanning left"); scanNodes(root.right); System.out.println("node"+root.val+" finish scanning right"); } } public static void main(String[] args) { TreeNode root=new TreeNode(1); TreeNode left1=new TreeNode(2); TreeNode left2=new TreeNode(3); TreeNode right1=new TreeNode(4); //创建一棵树 root.left=left1; left1.right=left2; root.right=right1; scanNodes(root); } }
运行结果如下:
总体思路就是先左子树,再右子树;左子树上的每个结点都要判断是否有左右孩子,当遍历到左子树的叶子节点时,左子树遍历完毕,开始右子树。
相关文章推荐
- 一段有趣的js代码,让你对js的运行加载有深刻的理解
- 二叉树非递归遍历复习代码实现
- 递归的理解 腾讯笔试题 二叉树
- 二叉树的先序、中序、后序的递归、非递归的C++代码
- 二叉树各种遍历-递归及非递归代码
- 一段方法内部递归代码的写法
- 递归调用理解【含有示例代码】
- 算法—递归案例—一段神奇的代码
- C# 一段代码理解”委托“
- 二叉树先序、中序、后序遍历的非递归实现,纯c代码
- Java代码分别用递归和非递归方式计算二叉树的最大深度
- 一个程序理解java二叉树-创建、递归非递归便利、获取路径
- C++11新特性:Lambda函数(匿名函数) 一段代码即可理解
- c语言数据结构中二叉树的先序、中序、后序三种递归遍历代码
- java堆排序非递归代码,无原理版,比较好理解
- 一段可以清理NSArray中的空对象的代码(递归)
- 二叉树的遍历(代码递归和数据递归)
- python剑指offer系列通过求二叉树的深度来理解递归
- 一段理解nio的代码
- 通过二叉树的遍历理解递归