二叉树中的最长路径和返回节点值

时间:2014-09-05 23:10:26

标签: tree binary-tree

我正在尝试找到二叉树中最长的路径并打印出来。例如:对于树:
      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,但我不确定如何使用它。任何帮助都会很棒

1 个答案:

答案 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>())