二叉树基础遍历(持续更新中)
1.层序遍历
分析
队列实现Queue
返回List<List<Integer>>
List<Integer> 存储每层节点值
代码
public class Solution {
List<List<Integer>> res=new Arraylist<>();
public int TreeDepth(TreeNode root) {
if(root==null) return res;
Queue<TreeNode> queueNode=new LinkedList<>();
queueNode.offer(root);
while(!queueNode.isEmpty()){
int size=queueNode.size();
List<Integer> list=new ArrayList<>();
for(int i=0;i<size;i++){
TreeNode cur=queueNode.poll();
list.add(cur.val);
if(cur.left!=null){
queueNode.offer(cur.left);
}
if(cur.right!=null){
queueNode.offer(cur.right);
}
}
res.add(list);
}
return arr;
}
与层序遍历相似的题目:
? 剑指offer:38.求二叉树的深度
import java.util.Queue;
import java.util.LinkedList;
public class Solution {
public int TreeDepth(TreeNode root) {
int depth=0;
if(root==null) return depth;
Queue<TreeNode> queueNode=new LinkedList<>();
queueNode.offer(root);
while(!queueNode.isEmpty()){
depth++;
int size=queueNode.size();
for(int i=0;i<size;i++){
TreeNode cur=queueNode.poll();
if(cur.left!=null){
queueNode.offer(cur.left);
}
if(cur.right!=null){
queueNode.offer(cur.right);
}
}
}
return depth;
}
}
剑指offer:22.从上往下打印二叉树
import java.util.Queue;
import java.util.LinkedList;
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> arr=new ArrayList<>();
if(root==null) return arr;
Queue<TreeNode> queueNode=new LinkedList<>();
queueNode.offer(root);
while(!queueNode.isEmpty()){
int size=queueNode.size();
for(int i=0;i<size;i++){
TreeNode cur=queueNode.poll();
arr.add(cur.val);
if(cur.left!=null){
queueNode.offer(cur.left);
}
if(cur.right!=null){
queueNode.offer(cur.right);
}
}
}
return arr;
}
}
2.前序遍历
3.中序遍历
4.后续遍历
|