70. Leetcode 701. 二叉搜索树中的插入操作 (二叉搜索树-基本操作类)
生活随笔
收集整理的這篇文章主要介紹了
70. Leetcode 701. 二叉搜索树中的插入操作 (二叉搜索树-基本操作类)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
給定二叉搜索樹(BST)的根節(jié)點?root?和要插入樹中的值?value?,將值插入二叉搜索樹。 返回插入后二叉搜索樹的根節(jié)點。 輸入數(shù)據(jù) 保證 ,新值和原始二叉搜索樹中的任意節(jié)點值都不同。注意,可能存在多種有效的插入方式,只要樹在插入后仍保持為二叉搜索樹即可。 你可以返回 任意有效的結(jié)果 。示例 1:輸入:root = [4,2,7,1,3], val = 5
輸出:[4,2,7,1,3,5]
解釋:另一個滿足題目要求可以通過的樹是:示例 2:輸入:root = [40,20,60,10,30,50,70], val = 25
輸出:[40,20,60,10,30,50,70,null,null,25]
示例 3:輸入:root = [4,2,7,1,3,null,null,null,null,null,null], val = 5
輸出:[4,2,7,1,3,5]思路:采用經(jīng)典的插入方法,使整體操作變化最小。直接深拷貝構(gòu)造新樹,然后修改 尋找到合適的葉位置后插入新節(jié)點,這樣只需要在原樹的某個葉節(jié)點處延伸一個節(jié)點# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def insertIntoBST(self, root: TreeNode, val: int) -> TreeNode:res = copy.deepcopy(root)cur_node = res# 如果二叉搜索樹為空樹,用val構(gòu)造二叉樹節(jié)點作為根節(jié)點并返回if cur_node == None:return TreeNode(val)while cur_node:if val > cur_node.val:# 走向右子樹if cur_node.right != None:cur_node = cur_node.rightelse:# 右子樹為空,則找到右子樹插入位置cur_node.right = TreeNode(val)return reselif val < cur_node.val:if cur_node.left != None:cur_node = cur_node.leftelse:cur_node.left = TreeNode(val)return res
總結(jié)
以上是生活随笔為你收集整理的70. Leetcode 701. 二叉搜索树中的插入操作 (二叉搜索树-基本操作类)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 68. Leetcode 669. 修剪
- 下一篇: 72. Leetcode 99. 恢复二