class Solution {
List <Integer> list = new ArrayList<>();
public List<Integer> preorderTraversal(TreeNode root) {
if(root==null)
return new ArrayList<>();
list.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
return list;
}
}
class Solution {
List <Integer> list = new ArrayList<Integer>();
public List<Integer> inorderTraversal(TreeNode root) {
if(root == null)
return list;
inorderTraversal(root.left);
list.add(root.val);
inorderTraversal(root.right);
return list;
}
}
class Solution {
List <Integer> list = new ArrayList<Integer>();
public List<Integer> postorderTraversal(TreeNode root) {
if(root == null)
return new ArrayList<Integer>();
postorderTraversal(root.left);
postorderTraversal(root.right);
list.add(root.val);
return list;
}
}
层序遍历:
层序遍历我认为也可以看作是树的广度优先搜索(BFS),以根节点开始,依次遍历一级邻接点,二级邻接点…等等
具体实现是用队列去实现
力扣对于层序遍历的演示
class Solution {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
List<List<Integer>> list = new ArrayList<List<Integer>>();
public List<List<Integer>> levelOrder(TreeNode root) {
if(root == null)
return list;
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
List<Integer> innerList = new ArrayList<Integer>();;
while(size--!=0){
TreeNode treeNode = queue.poll();
innerList.add(treeNode.val);
if(treeNode.left != null)
queue.add(treeNode.left);
if(treeNode.right != null)
queue.add(treeNode.right);
}
if(innerList != null)
list.add(innerList);
}
return list;
}
}