我正在尝试找到二叉树中最长的路径并打印出来。例如:对于树:
3
/ \
4 5
/ \
6 2
我想打印3,5,6或3,5,2。
我有以下代码来获取maxdepth:
public int getMaxDepth(Node<Integer> node){
if (node == null) return 0;
return 1 + Math.max(node.left, node.right);
}
然而,在获得深度之后,我不确定如何获得确切的路径。我在考虑使用Stack,但我不确定如何使用它。任何帮助都会很棒
答案 0 :(得分:0)
不确定您使用的是哪种语言。有几种方法可以做到这一点。我做了类似的事情:
public List<Node<Integer>> getMaxPath(Node<Integer> current, List<Node<Integer>> list){
if (current == null)
return list;
list = list.copy();
list.append(current);
List<Node<Integer>> left = getMaxPath(node.left, list);
List<Node<Integer>> right = getMaxPath(node.right, list);
return left.length > right.length ? left : right;
}
getMaxPath(tree.head, new List<Integer>())