LeetCode 二叉搜尋樹中的順序後繼

2022-06-24 08:00:14 字數 1342 閱讀 2983

q:給你乙個二叉搜尋樹和其中的某乙個結點,請你找出該結點在樹中順序後繼的節點。

結點 p 的後繼是值比 p.val 大的結點中鍵值最小的結點。

示例 1:

輸入: tree = [2,1,3], node = 1

輸出: 2

解析: 1 的中序後繼結點是 2 。注意節點和返回值都是 node 型別的。

示例 2:

輸入: tree = [5,3,6,2,4,null,null,1], node = 6

輸出: null

解析: 該結點沒有中序後繼,因此返回 null 。

a:如果走到這一步,說明不存在順序後繼,返回空。

public treenode inordersuccessor(treenode root, treenode p) 

stackstack = new stack<>();

int inorder = integer.min_value;

while (!stack.isempty() || root != null)

root = stack.pop();

if (inorder == p.val) return root;

inorder = root.val;

root = root.right;

}return null;

}

類似查詢前驅:

如果當前節點的左子樹不為空,那麼該點的前驅節點為該點左子樹中最右的節點

如果當前節點的左子樹為空,那麼該點的前驅節點為從該點往上延伸,如果延伸到的點為其父親節點的右孩子,那麼這個父親節點就是該點的前驅節點

public treenode inorderprecursor(treenode root, treenode p) 

stackstack = new stack<>();

int inorder = integer.min_value;

while (!stack.isempty() || root != null)

root = stack.pop();

if (root== p.val) return inorder;

inorder = root.val;

root = root.right;

}return null;

}

LeetCode 二叉搜尋樹中的搜尋

給定二叉搜尋樹 bst 的根節點和乙個值。你需要在bst中找到節點值等於給定值的節點。返回以該節點為根的子樹。如果節點不存在,則返回 null。例如,給定二叉搜尋樹 4 2 7 1 3 和值 2 你應該返回如下子樹 2 1 3 在上述示例中,如果要找的值是 5,但因為沒有節點值為 5,我們應該返回 ...

leetcode 二叉樹 驗證二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true 示例 2 輸入 5 1 4 3 6 輸出 false 解釋 ...

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...