先複習乙個等比數列的公式:
此題的答案是: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 ...