給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值為4。
首先,我們可以先畫圖。畫完圖後我們要想辦法從中找出第k小的節點。
因為這是二叉搜尋樹,我們可以輕易發現它的中序遍歷序列就是從小到大排列,也就是我們可以直接中序遍歷,同時計數,就可以得到我們想要的節點了。
不過需要注意的是我們的計數變數k應該在函式外面,不然遞迴進去後回來時是無法獲得已經改變了的k值的。
functionkthnode(proot, k)
//為了能追蹤k,應該把kthnodecore函式定義在這裡面,k應該在kthnodecore函式外面
function
kthnodecore(proot)
if (target === null
) k--;
}if (target === null && proot.right !== null
)
return
target;
} return
kthnodecore(proot);
}
劍指Offer62 二叉搜尋樹的第k個結點
給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。思路 coding utf 8 class treenode def init self,x self.val x self.left none self.right none ...
劍指offer 62 二叉搜尋樹的第k個結點
package project 題目 二叉搜尋樹的第k個結點。給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如 5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。author hexiaoli 思路 劍指offer 二叉搜尋樹 左子結點的值 根結點的值 右子結點的值。二叉搜尋樹...
劍指offer62 二叉搜尋樹的第k個結點
給定一棵二叉搜尋樹,請找出其中的第k小的treenode結點。思路1 最直接的,我們知道將一棵二叉搜尋樹進行中序遍歷,得到的結果就是公升序排列的,這樣就能輕鬆找到了。實現 class solution treenode kthnode treenode proot,int k 仔細想想上面的實現,不...