Leetcode-binary-tree-inorder-traversal

来源:互联网 发布:mysql如何导出数据库 编辑:程序博客网 时间:2024/06/11 02:28

题目描述


Given a binary tree, return the inorder traversal of its nodes' values.

For example:
Given binary tree{1,#,2,3},

   1    \     2    /   3


return[1,3,2].

Note: Recursive solution is trivial, could you do it iteratively?

confused what"{1,#,2,3}"means? > read more on how binary tree is serialized on OJ.


OJ's Binary Tree Serialization:

The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

Here's an example:

   1  / \ 2   3    /   4    \     5
The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".
题目故弄玄虚说了那么多,就是一句话,求中序遍历。
这里有一个问题需要注意,就是最后需要返回的是ArrayList,而不是以前做的System.out.print(),把ArrayList作为参数带进去,这样处理下来最终这个list里面就保存了所有遍历过得元素。 这个小点在很多题目中都能应用到,就是把最终需要输出的list或者数组以参数的形式放进递归函数里,最终输出这个参数代表的数据结果。
import java.util.*;public class Solution {    public ArrayList<Integer> inorderTraversal(TreeNode root) {ArrayList<Integer> list = new ArrayList<Integer>();inorder(root, list);return list;    }    public static void inorder(TreeNode root, ArrayList<Integer> list) {if(root != null){        inorder(root.left,list);list.add(root.val);inorder(root.right,list);        }}}

这就是代码,理论很简单,就是利用递归,先左孩子,然后根节点,最后右孩子。
类似地,我们可以得出先序遍历,后序遍历的代码。
0 0
原创粉丝点击