class Solution { private String smallestFromLeaf(TreeNode node, StringBuilder sb) { if (node == null) { sb.reverse(); String reversed = sb.toString(); sb.reverse(); return reversed; } sb.append((char) ('a' + node.val)); String left = smallestFromLeaf(node.left, sb); String right = smallestFromLeaf(node.right, sb); sb.deleteCharAt(sb.length() - 1); if (node.left == null) { return right; } else if (node.right == null) { return left; } int cmp = left.compareTo(right); if (cmp < 0) { return left; } return right; } public String smallestFromLeaf(TreeNode root) { return smallestFromLeaf(root, new StringBuilder(8500)); } }