
JAVA解法
/**
* 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> res = new ArrayList<Integer>();
// 從根節點開始遞歸
preorder(root, res);
// 傳回結果集
return res;
}
// 前序周遊
public void preorder(TreeNode root, List<Integer> res) {
// 判空
if (root == null) {
return;
}
// 将 root 節點的值加入結果集
res.add(root.val);
// 從左子樹開始周遊
preorder(root.left, res);
// 右子樹周遊
preorder(root.right, res);
}
}
複制
題解分析
這道題是樹的前序周遊,就是以先周遊左子樹再周遊右子樹的方式周遊整棵樹,使用遞歸思路簡單清晰。
leetcode原題:144. 二叉樹的前序周遊