题目:
二叉树中序遍历
思路:
这个主要是递归,但是带返回值的递归怎么处理?可以通过指针,直接操作内存/引用,就不用返回值了
代码:
public class Solution94 {
//思考:带返回值的递归函数
//如果不想带返回值,可以通过函数操作指针来实现
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<Integer>();
inorderTraversal(root,res);
return res;
}
private void inorderTraversal(TreeNode node,List list){
if(node != null){
inorderTraversal(node.left,list);
list.add(node.val);
inorderTraversal(node.right,list);
}
}
}
同理
Leetcode144-前序遍历
public class Solution144 {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<Integer>();
preorderTraversal(root,res);
return res;
}
private void preorderTraversal(TreeNode node,List list){
if(node != null){
list.add(node.val);
preorderTraversal(node.left,list);
preorderTraversal(node.right,list);
}
}
}
Leetcode145-后序遍历
public class Solution145 {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<Integer>();
postorderTraversal(root,res);
return res;
}
private void postorderTraversal(TreeNode node,List list){
if(node != null){
postorderTraversal(node.left,list);
postorderTraversal(node.right,list);
list.add(node.val);
}
}
}