二叉树的层次遍历
1.介绍
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],

2.解决思想
通过递归方法,每次保存一层的节点和一层节点的值
3.代码
public static List<List<Integer>> levelOrder(TreeNode root) { if (root==null)return null; List<List<Integer>> lists = new ArrayList<List<Integer>>(); List<Integer> List = new ArrayList<Integer>(); List.add(root.val); lists.add(List); List<TreeNode> treeNodes = new ArrayList<TreeNode>(); treeNodes.add(root); saveData(treeNodes,lists); return lists; } public static void saveData(List<TreeNode> treeNodes, List<List<Integer>> lists){ if(treeNodes.isEmpty())return ; List<TreeNode> nodeList = new ArrayList<TreeNode>(); List<Integer> list = new ArrayList<Integer>(); for(TreeNode treeNode:treeNodes){ if(treeNode.left!=null){ list.add(treeNode.left.val); nodeList.add(treeNode.left); } if(treeNode.right!=null){ list.add(treeNode.right.val); nodeList.add(treeNode.right); } } if(!list.isEmpty())lists.add(list); saveData(nodeList,lists); }
------------------------------------------------------------------------------------------------------------------------------------------------- 觉得我的博客有用的,请顶下我的文章并关注我,让更多的人能看到我写的博客,谢谢。-------------------------------------------------------------------------------------------------------------------------------------------------
网上的答案很多,但是怎么说呢,太多都是那种复制粘贴的答案,有些都是运行不了的。我写博客的原因主要是为了分享我的学习过程,帮助大家,同时也让其他人检查我的答案。太过简单的博客我就不写了,浪费彼此时间。
首先我保证,我的代码都是自己运行过的,如果是同样的java1.7是不会有问题。
其次,我的代码都是写清楚了解决思想的,便于大家理解。
我写代码主要是看中可读性,太过复杂的代码,在我看来是很扯淡的。代码的可读性很重要,尤其是在项目中,一个项目的代码如果需要他人阅读半天才能理解,那么这个项目会越来越难处理。

浙公网安备 33010602011771号