面試題 04 06 後繼者

2022-05-08 21:51:13 字數 1493 閱讀 7866

設計乙個演算法,找出二叉搜尋樹中指定節點的「下乙個」節點(也即中序後繼)。

如果指定節點沒有對應的「下乙個」節點,則返回null。

示例 1:

輸入: root = [2,1,3], p = 1

2/ \

1 3

輸出: 2

示例 2:

輸入: root = [5,3,6,2,4,null,null,1], p = 6

5/ \

3 6

/ \2 4

/

1輸出: null

單純中序遍歷:一旦找到比p的val大的(第乙個比p的val大的節點就是p的中序後繼)直接返回。

/*

* * definition for a binary tree node.

* struct treenode

* }; */

class

solution

auto res=inordersuccessor(root->left,p);

if(res and res->val>p->val)

if(root->val>p->val)

res=inordersuccessor(root->right, p);

if(res and res->val>p->val)

return nullptr;//

後繼要麼不存在,要麼不在以root為根的子樹中

}};

用乙個引用儲存中序遍歷的前驅節點:

/*

* * definition for a binary tree node.

* struct treenode

* }; */

class

solution

void helper(treenode* node,treenode*& pre)

helper(node->left,pre);

if(pre==p)

pre=node;

helper(node->right,pre);

}};

如果p有右子樹,取其右子樹中的最靠左節點即可。

如果p沒有右子樹,那麼利用二叉搜尋樹性質,從root開始往下查詢比p->val大的最小val值節點即可。

/*

* * definition for a binary tree node.

* struct treenode

* }; */

class

solution

return

p; }

else

if(root->valval)

else

if(root->val>p->val)

}return res->val==int_max?nullptr:res;

}return

nullptr;

}};

面試題 04 06 後繼者

面試題 04.06.後繼者 難度中等23收藏分享切換為英文關注反饋 設計乙個演算法,找出二叉搜尋樹中指定節點的 下乙個 節點 也即中序後繼 如果指定節點沒有對應的 下乙個 節點,則返回null。示例 1 輸入 root 2,1,3 p 1 2 1 3輸出 2示例 2 輸入 root 5,3,6,2,...

程式設計師面試金典 04 06 後繼者 遞迴

設計乙個演算法,找出二叉搜尋樹中指定節點的 下乙個 節點 也即中序後繼 如果指定節點沒有對應的 下乙個 節點,則返回null。示例 1 輸入 root 2 1,3 p 12 1 3輸出 2示例 2 輸入 root 5 3,6 2,4 null,null,1 p 65 3 6 24 1 輸出 null...

面試題 PHP面試題

建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...