登录
  • #刷题

请问‌‌‌‌‌‌‍‍‌‍‍‌‌‍‌‍‍‌‌‌‍‍‌‍‌‍‌‌‌‍‌‌可以用tail recursion来解决tree traversal吗?

shuatizhe
180
0
比如,preOrder tree traversal,一般都是这样递归:
public class Solution {[br][/br][br][/br]    public List<Integer> preorderTraversal(TreeNode root) {[br][/br][br][/br]        List<Integer> result = new ArrayList<Integer>();[br][/br][br][/br]        traverse(root, result);[br][/br][br][/br]        return result;[br][/br][br][/br]    }[br][/br][br][/br]    private void traverse(TreeNode root, List<Integer> result) {[br][/br][br][/br]        if (root == null) {[br][/br][br][/br]            return;[br][/br][br][/br]        }[br][/br][br][/br]        result.add(root.val);                [br][/br][br][/br]        traverse(root.left, result);                [br][/br][br][/br]        traverse(root.right, result);[br][/br][br][/br]    }[br][/br][br][/br]}
但是这不是尾递归,如果要换成尾递归就要把 result.add(root.val)也放到traverse( )参数中,试了几种方法,都不对。知道有没有尾递归的解法?谢谢!
0条回复
热度排序

发表回复