劍指Offer 54 二叉搜尋樹的第K大節點

2022-08-11 07:30:13 字數 776 閱讀 8860

題目描述

給定一棵二叉搜尋樹,請找出其中第k大的節點。

思路:中序遍歷變體

按右->root->左的順序遍歷,並計數k

**:

/*

* * definition for a binary tree node.

* function treenode(val) */

/*** @param root

* @param k

* @return */

var kthlargest = function

(root, k)

//中序遍歷左節點

inorder(root.left);

}};

迭代法:

/*

* * definition for a binary tree node.

* function treenode(val) */

/*** @param root

* @param k

* @return */

var kthlargest = function

(root, k)

const cur =stack.pop();

if(++count ===k)

root =cur.left;

}};

時間複雜度:o(n),當需要找最小的樹時要遍歷所有節點;當二叉搜尋樹是乙個鍊錶時相當於在陣列中線性搜尋

空間複雜度:o(n),最壞情況需要o(n)的棧空間

劍指offer 54 二叉搜尋樹的第K大結點

給定一棵二叉搜尋樹,請找出其中第k大的結點。include includetypedef int datatype typedef struct bstreenodebstreenode 建立二叉搜尋樹 int bstreeinsert2 bstreenode root,datatype key i...

劍指 Offer 54 二叉搜尋樹的第k大節點

給定一棵二叉搜尋樹,請找出其中第k大的節點。方法一 中序遍歷,然後取值 二叉搜尋數中序遍歷的結果就是乙個有序陣列,演算法也很容易寫。這裡使用了arraylist類 definition for a binary tree node.public class treenode class soluti...

劍指 Offer 54 二叉搜尋樹的第k大節點

劍指 offer 54.二叉搜尋樹的第k大節點 給定一棵二叉搜尋樹,請找出其中第k大的節點。輸入 root 3,1,4,null,2 k 1 輸出 4 二叉搜尋樹,若任意節點的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 若任意節點的右子樹不空,則右子樹上所有節點的值均大於它的根節點的值 ...