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