/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ classSolution { public: TreeNode* insertIntoBST(TreeNode* root, int val){ if (root == NULL) returnnewTreeNode(val); dfs(root, val); return root; } voiddfs(TreeNode* node, int val){ if (node->val > val && node->left != NULL) dfs(node->left, val); elseif (node->val < val && node->right != NULL) dfs(node->right, val); if (node->val > val && node->left == NULL) node->left = newTreeNode(val); elseif (node->val < val && node->right == NULL) node->right = newTreeNode(val); } };
Go
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func insertIntoBST(root *TreeNode, val int) *TreeNode {
if root == nil {return &TreeNode{Val: val}}
dfs(root, val)
return root
}
func dfs(node *TreeNode, val int) {
if node.Val > val && node.Left != nil {dfs(node.Left, val)}
if node.Val < val && node.Right != nil {dfs(node.Right, val)}
if node.Val > val && node.Left == nil {node.Left = &TreeNode{Val: val}}
if node.Val < val && node.Right == nil {node.Right = &TreeNode{Val: val}}
}