自上而下或自下而上?

时间:2012-07-18 04:33:21

标签: algorithm sorting binary-search-tree


我对来自Leetscode.com的这个问题感到困惑,这个算法是自上而下还是自上而下?

public static TreeNode addToTree(int arr[], int start, int end){ 
  if (end < start) {
    return null;
  }
 int mid = (start + end) / 2;
 TreeNode n = new TreeNode(arr[mid]); 
 n.left = addToTree(arr, start, mid - 1); 
 n.right = addToTree(arr, mid + 1, end); 
 return n;
}

谢谢

1 个答案:

答案 0 :(得分:1)

这是一种自上而下的方法。该算法将中间元素放在一个节点中,然后构建左右子树。首先创建 top 节点,然后树向下向下

在自下而上的方法中,首先创建左子树和右子树,然后将它们添加到其父树中。它会是这样的:

public static TreeNode addToTree(int arr[], int start, int end){ 
    if (end < start) {
        return null;
    }

    int mid = (start + end) / 2; 
    TreeNode left = addToTree(arr, start, mid - 1); 
    TreeNode right = addToTree(arr, mid + 1, end); 
    TreeNode n = new TreeNode(arr[mid]);
    n.left = left;
    n.right = right;
    return n;
}

在这种方法中,首先创建树的 bottom 节点,然后将向上构建树