滿k叉樹的孩子節點的編號問題推導

2022-05-26 02:54:10 字數 734 閱讀 3051

先複習乙個等比數列的公式:

此題的答案是:k( x -1 )  + 1 + i

我的解法:

解這一道題的關鍵是充滿想象力,k叉樹是自相似的。也就是說:你只需要把每一層乘以k(也就是"放大"k倍)就得到也是乙個k叉樹,只不過沒有根,而且是每層都是原k叉樹向下平移了一層。

每一層的下面一層,相當於把每一層放大k倍,也就是平移到下面一層了。

所以,在這道題目中,我要想得到下一層x編號節點所在的那個位置的編號,只需要把k (x - 1) 就得到放大後的k叉樹x的那個位置之前的點數總和,最後再+1,因為剛才沒算根。

這裡有個問題,怎麼利用上剛才的等比數列求和公式的

結論呢?

因為:這個k叉樹每層的元素個數都滿足等比數列,第n層有k^(n-1)個元素,前n層有sn=1+k+……+k^(n-1)個元素

所以原始的k叉樹的編號x-1,就表示編號x節點之前的元素和(x-1 = x節點之前元素s(n))

q => k, s(n)=>x-1:   k (x-1) +1               

最後再加上i表示第i個孩子了

即可得答案

樹 二叉搜尋樹的第K個節點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。分析 二叉搜尋樹就是每個節點x,大於其左子樹的值,小於其右子樹的值,其中序排序是遞增的。使用中序遍歷,每遍歷乙個節點,k 1,直到k減到1,即為第k小的節點 function t...

二叉搜尋樹的第k個節點

題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的節點。只需中序遍歷一顆二叉搜尋樹,就很容易找出它的第k大節點 非遞迴方法 class solution treenode pnode s.top s.pop if cnt k return pnode p pnode right return nul...

二叉樹的第K大節點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。思路 遞迴的思路,返回一次k減小1.struct treenode class solution treenode res kthnodecore proot,k return ...