二叉查詢樹的中序後繼 LintCode

2021-08-21 03:50:24 字數 762 閱讀 6075

描述

給定乙個二叉查詢樹(什麼是二叉查詢樹),以及乙個節點,求該節點在中序遍歷的後繼,如果沒有返回null

保證p是給定二叉樹中的乙個節點。(您可以直接通過記憶體位址找到p)

樣例 給出 tree = [2,1] node = 1:

2

/1

返回 node 2.

給出 tree = [2,1,3] node = 2:

2

/ \1 3

返回 node 3.

挑戰 o(h),其中h是bst的高度。

思路

#ifndef c448_h

#define c448_h

#include

using namespace std;

class treenode

};class solution

return temp;

}else

return p->right;

}else

}//在p沒有右子樹的情況下找到root中第乙個值大於p的節點

void findnext(treenode *root, treenode* p)

else

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

else

return;

}treenode *temp =

null;

};#endif

二叉查詢樹的中序後繼

給定乙個二叉查詢樹 什麼是二叉查詢樹 以及乙個節點,求該節點在中序遍歷的後繼,如果沒有則返回null 樣例 1 輸入 node with value 1 輸出 2 解釋 1 2樣例 2 輸入 node with value 1 輸出 2 解釋 2 1 3二叉樹的表示 o h 其中h是bst的高度。保...

樹 尋找二叉排序樹的前驅後繼(中序遍歷)

前驅結點 結點val值小於該結點val值並且值最大的結點 後繼結點 結點val值大於該結點val值並且值最小的結點 若乙個結點有左子樹,那麼該結點的前驅節點是其左子樹中val值最大的結點 即左子樹中最右邊的結點 若乙個結點沒有左子樹 若該結點是其父結點的右孩子,那麼該結點的前驅結點即為其父結點。若該...

二叉樹後繼節點

二叉樹後繼節點,中序遍歷的後乙個節點 1 有右子樹,右子樹的最左節點是後繼 2 無右子樹,並且是父節點的左孩子,父節點為後繼 3 無右子樹,並且是父節點的右孩子,查該節點是哪個節點左子樹的最後節點 一直往上找,找到乙個節點是父節點的左孩子,則該父節點為後繼節點 class node def init...