144. 二叉树的前序遍历

144. 二叉树的前序遍历

思路:
总体来说二叉树讲究的就是一套完整的解法体系以及框架套路,真正弄明白的人不多,大部分人会在递归遍历时被程序搞得晕头转向。但实际上只要你明白了循环和递归的区别,你也就算弄明白了二叉树。

这道题是二叉树前序遍历,在力扣上为简单题,所以读者大概率会读懂我的代码并看出解题框架。

题目是让求前序遍历,输入一个二叉树,你把它的前序遍历结果输出来。这种问题无非就是写一个遍历数组(travser)单独对二叉树进行遍历,同时在遍历的关键节点进行操作(前序遍历位置/中序遍历位置/后序遍历位置),就比如这道题。当遍历到前序位置时,你要把此时节点对应的值保存到一个数组中,这里我定义了一个Arraylist对结果进行保存。
144. 二叉树的前序遍历_第1张图片

/**
 * 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 {
    
    ArrayList<Integer> res = new ArrayList<>();


    public List<Integer> preorderTraversal(TreeNode root) {
        travser(root);
        return res;
    }

    void travser(TreeNode node){
        if(node == null){
            return ;
        }
        res.add(node.val);
        travser(node.left);
        travser(node.right);
    }
}

你可能感兴趣的:(LeetCode,leetcode,算法,职场和发展)