继续打卡算法题,今天学习的是LeetCode第94题二叉树的中序遍历,这道题目是道简单题
。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些提升。
分析一波题目
哈哈,遍历树的题目,我们都可以使用递归法,和回溯算法类似,本题是中序遍历,记住按左根右
节点的顺序遍历,就是父节点要在遍历的中间。
本题解题技巧
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 {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<>();
dfs(result, root);
return result;
}
public void dfs(List<Integer> result, TreeNode node) {
if(node == null) {
return;
}
TreeNode left = node.left;
//遍历左子树
dfs(result, left);
//遍历根节点
int v = node.val;
result.add(v);
TreeNode right = node.right;
//遍历右子树
dfs(result, right);
}
}
总结
1、递归法遍历树是比较好理解的,代码也比较简洁,我们记住这种解法,可以解决很多树相关的题目。
2、中序遍历的顺序,先遍历左子树,再遍历右子树,最后遍历根节点。