前言
二叉树的题目还有很多,我打算把这些全做了。
今天的这道也是关于二叉树的题目,算得上是二叉树题目中比较简单的题目了,虽然这道题本身难度就是处于简单系列。
还是一起来看一下吧,顺便加深一下对二叉树的理解。
算法题:二叉树的前序遍历
本道题的题意,是要将一个二叉树中的值全部读取到一个list集合中。
这从题目本上来看其实很简单。
这里有一个非常重要的点需要注意一下,题目示例中并没有给出二叉树左右节点都有值的情况,并不是不会存在的,所以要把左右节点都考虑进去才行。
具体的一些实现思路,主要就是递归,从上几次的经验来看,递归是处理二叉树最有效的方式了。
通过递归方法,将左右子节点的值也一并放置到List集合中,最后就是我们要的预期结果了。
代码展示
运行代码如下,采用的就是上述方案,请各位查漏补缺。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<Integer>(); digui(root, list); return list; } public void digui(TreeNode root, List<Integer> list) { if (root == null) { return; } list.add(root.val); digui(root.left, list); digui(root.right, list); } }
执行结果如下
结果可以说是相当不错了,二叉树的递归,加上List集合的搭配可以解决很多类型的问题。
总结
这道题本身并不难,二叉树的题目也做了好几道了,自然也就是递归方法来处理此类问题。