在二叉查找树中插入节点

来源:互联网 发布:淘宝外观专利投诉流程 编辑:程序博客网 时间:2024/06/09 15:19

问题描述:

给定一棵二叉查找树和一个新的树节点,将节点插入到树中。

你需要保证该树仍然是一棵二叉查找树。


样例:

给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的:

  2             2 / \           / \1   4   -->   1   4   /             / \   3             3   6
挑战 

解题思路:

按照二叉排序树的特点比根结点大往右放,知道右子树为NULL就放,比根节点小,往左放。
代码:

/** * Definition of TreeNode: * class TreeNode { * public: *     int val; *     TreeNode *left, *right; *     TreeNode(int val) { *         this->val = val; *         this->left = this->right = NULL; *     } * } */class Solution {public:    /**     * @param root: The root of the binary search tree.     * @param node: insert this node into the binary search tree     * @return: The root of the new binary search tree.     */    TreeNode* insertNode(TreeNode* root, TreeNode* node) {        // write your code here        if (root==NULL) {root=node; return root;}        if (node->val > root->val) {          if(root->right==NULL) {              root->right=node;          } else {insertNode(root->right, node) ;}                        }else {            if(root->left==NULL) {              root->left=node;          } else {insertNode(root->left, node) ;}        }        return root;    }};


感想:

实现功能很简单,但是一定要抓住核心概念,细节处理也是很重要的。