Insert into a Binary Search Tree 二叉搜尋樹中的插入操作
阿新 • • 發佈:2018-12-10
給定二叉搜尋樹(BST)的根節點和要插入樹中的值,將值插入二叉搜尋樹。 返回插入後二叉搜尋樹的根節點。 保證原始二叉搜尋樹中不存在新值。
注意,可能存在多種有效的插入方式,只要樹在插入後仍保持為二叉搜尋樹即可。 你可以返回任意有效的結果。
例如,
給定二叉搜尋樹: 4 / \ 2 7 / \ 1 3 和 插入的值: 5
你可以返回這個二叉搜尋樹:
4 / \ 2 7 / \ / 1 3 5
或者這個樹也是有效的:
5 / \ 2 7 / \ 1 3 \ 4
思路:因為二叉樹滿足:左節點值<根節點值,右節點值>根節點值,所以我們可以不斷用val與當前的節點的值進行判斷,如果比當前節點小,就移到左子節點,否則就移到右子節點。。。一直迴圈到當前節點是空節點,那麼剛好就是帶插入的節點,我們插入對應的位置就行了。
參考程式碼:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* insertIntoBST(TreeNode* root, int val) { TreeNode* res = root; TreeNode* tmp = res; TreeNode* parentNode = tmp; while (tmp) { parentNode = tmp; if (val > tmp->val) tmp = tmp->right; else tmp = tmp->left; } if (val > parentNode->val) { TreeNode* node = new TreeNode(val); parentNode->right = node; } else { TreeNode* node = new TreeNode(val); parentNode->left = node; } return res; } };