1、二叉树的中序遍历
递归解法
//递归解法
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
helper(root, res);
return res;
}
public void helper(TreeNode root, List<Integer> res){
if(root!=null){
if(root.left!=null){
helper(root.left, res);
}
res.add(root.val);
if(root.right!=null){
helper(root.right, res);
}
}
}
}
非递归解法
2、二叉树的前序遍历
递归解法
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
if(root==null){
return res;
}
helper(root, res);
return res;
}
public void helper(TreeNode root, List<Integer> res){
res.add(root.val);
if(root.left!=null){
helper(root.left, res);
}
if(root.right!=null){
helper(root.right, res);
}
}
}
非递归解法
3、二叉树的后序遍历
递归解法
class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
helper(root, res);
return res;
}
public void helper(TreeNode root, List<Integer> res){
if(root==null){
return;
}
if(root.left!=null){
helper(root.left, res);
}
if(root.right!=null){
helper(root.right, res);
}
res.add(root.val);
}
}
非递归解法
4、二叉树的层次遍历
递归解法
非递归解法