思路: 总体来说二叉树讲究的就是一套完整的解法体系以及框架套路,真正弄明白的人不多,大部分人会在递归遍历时被程序搞得晕头转向。 144. 二叉树的前序遍历 思路: 总体来说二
思路:
总体来说二叉树讲究的就是一套完整的解法体系以及框架套路,真正弄明白的人不多,大部分人会在递归遍历时被程序搞得晕头转向。但实际上只要你明白了循环和递归的区别,你也就算弄明白了二叉树。
这道题是二叉树前序遍历,在力扣上为简单题,所以读者大概率会读懂我的代码并看出解题框架。
题目是让求前序遍历,输入一个二叉树,你把它的前序遍历结果输出来。这种问题无非就是写一个遍历数组(travser)单独对二叉树进行遍历,同时在遍历的关键节点进行操作(前序遍历位置/中序遍历位置/后序遍历位置),就比如这道题。当遍历到前序位置时,你要把此时节点对应的值保存到一个数组中,这里我定义了一个Arraylist对结果进行保存。
/**
* 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);
}
}