- #刷题
请问可以用tail recursion来解决tree traversal吗?

1800
比如,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条回复
热度排序