证明1:假设总结点数为n,拥有零个子结点的结点数为n0(即叶子结点),拥有1个子结点的结点数为n1,拥有2个子结点的结点数为n2(即满结点数)。
公式1:显然有 n = n0 + n1 + n2
公式2:从另一个角度出发,所有结点的子结点数目为:n1 + 2n2,再加上不是任何结点的子结点的根节点,就是结点总数,因此有n = n1 + 2n2 + 1
综合: n = n0 + n1 + n2 = n1 + 2n2 + 1
即有:n0 = n2 + 1
证明2:由n个元素组成的segment tree的高度是⌈log2n⌉。
满二叉树最后一层最少是1,最多是2h,因此有如下不等式:
1+2+...+2h-1 < 2n - 1 ≤ 1+2+...+2h
得到:2h - 1 < 2n - 1 ≤ 2h+1 - 1
得到:2h-1 < n ≤ 2h
得到:log2n ≤ h < log2n + 1
也即: h = ⌈log2n⌉