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;
}
}
Sequence traversal:
I think layer sequence traversal can also be regarded as a breadth-first search (BFS) of a tree, starting with the root node, traversing first-level neighbors, second-level neighbors... etc. The
specific implementation is to use queues to achieve
power Demonstration of sequence traversal
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;
}
}