二叉树的遍历
前序遍历
1 | public void before_dfs(TreeNode node) { |
中序遍历
1 | public void mid_dfs(TreeNode node) { |
后序遍历
1 | public void after_dfs(TreeNode node) { |
层次遍历
层次遍历与前中后序遍历不同,层次遍历需要使用队列,而不是栈!
1 | public List<List<Integer>> level(TreeNode node) { |
锯齿形层序遍历
思路和层序遍历一致,但是要维护个标志,标识下一层的遍历方向!
这里有个小技巧,与其说是锯齿形遍历,不如说在每一层从左往右遍历时,将当前节点值添加到双端队列的头还是尾!
这是一道不该失败的题!
1 | public List<List<Integer>> zigZagLevel(TreeNode node) { |