力扣热题100刷题day62|283.移动零、39.组合总和、94.二叉树的中序遍历
1.283.移动零——双指针
快慢两个指针,慢指针指向新数组,快指针遍历旧数组,寻找非0元素,找到后,交换快慢指针所指向元素;
因为快指针已经遍历过,所以交换前慢指针处的元素都是0;
2.39.组合总和——回溯法
特点:树的深度不确定,数组中无重复元素,同一元素可重复取多次;
for循环中的 i 是同一层的取值,backtracking递归是进入下一层(下一子树根节点),同一元素可重复取,但该元素前面的元素不能再取(避免组合重复),所以下一层递归中,规定for循环中开始遍历位置为 i(从上一层中进入遍历位置开始遍历;
代码随想录刷题day49|(回溯算法篇)39.组合总和-CSDN博客
3.94.二叉树的中序遍历——递归
递归遍历:左中右的顺序;
可以返回void,参数传入list,也可以返回list,全局定义list;
非递归遍历🔺:借用栈来存储遍历过的节点,否则遍历过的节点无法保存;
左子树不为空,一直向左下遍历;
左子树为空,但栈不为空,元素出栈,为最左下的元素,保存节点值(中),指向右节点(右);
代码随想录刷题day36|(二叉树篇)二叉树的非递归遍历(中序)+226.翻转二叉树-CSDN博客