二叉树的遍历
二叉树的遍历
每次需要用的时候,都要回过头去找,还不如就在这里记一下
这篇文章写的很不错 标记一下https://www.cnblogs.com/bigsai/p/11393609.html
先序遍历
先序遍历主要遵从 根 -> 左 -> 右 的方式进行遍历
class Solution {
List<Integer> list = new ArrayList();
public List<Integer> invertTree(TreeNode root) {
if(root!=null){
list.add(root.val);
invertTree(root.left);
invertTree(root.right);
return list;
}else{
return list;
}
}
}
中序遍历
中序遍历主要遵从 左 -> 根 -> 右 的方式进行遍历
class Solution {
List<Integer> list = new ArrayList();
public List<Integer> invertTree(TreeNode root) {
if(root!=null){
invertTree(root.left);
list.add(root.val);
invertTree(root.right);
return list;
}else{
return list;
}
}
}
后序遍历
后序遍历主要遵从 左 -> 右 -> 根 的方式进行遍历
class Solution {
List<Integer> list = new ArrayList();
public List<Integer> postorderTraversal(TreeNode root) {
if(root!=null){
postorderTraversal(root.left);
postorderTraversal(root.right);
list.add(root.val);
return list;
}else{
return list;
}
}
}
层次遍历
就是一层一层的遍历,需要用到队列进行辅助
public void cengxu(node t) {//层序遍历
Queue<node> q1 = new ArrayDeque<node>();
if (t == null)
return;
if (t != null) {
q1.add(t);
}
while (!q1.isEmpty()) {
node t1 = q1.poll();
if (t1.left != null)
q1.add(t1.left);
if (t1.right != null)
q1.add(t1.right);
System.out.print(t1.value + " ");
}
System.out.println();
}