这几天在力扣上刷
了些二叉树的题目,依靠基础 (前序遍历~中序遍历~ 后续遍历~层序遍历)解题,当然解题方法很多。
【先将基础遍历介绍大家】
前序遍历
第一步 建立循环 因为前序遍历 (跟 左 右)先将根节点放入list中 往左侧寻找 直到左侧最后一个节点 因此左侧一路所有节点全部放入list中。
第二步 此时栈顶元素为树左侧最后一个节点 进行右树的寻找。
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> mylist = new ArrayList<Integer>();
Stack<TreeNode> stack = new Stack<>();
TreeNode cur = root;记录根节点
while( cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);将根节点放入栈中
mylist.add(cur.val);因为是先序(跟 左 右)将跟的值放入list中
cur = cur.left;往左边走 直达左边没有元素 此时左侧已经到最后一个节点
}
TreeNode pre = stack.pop();将栈顶元素出栈
cur = pre.right;往右边进行发展
}
return mylist;最后返回list;
}
中序遍历
第一步 建立循环 因为中序遍历 ( 左 跟 右)先将根节点放入栈中 往左侧寻找 直到左侧最后