BST-插入解释

时间:2015-05-03 17:26:44

标签: c++ recursion binary-search-tree

我正在尝试学习二进制搜索树,我有一个与BST插入有关的疑问。这不是我的鳕鱼 e我从http://cslibrary.stanford.edu/110/BinaryTrees.html获取了这个

  library(data.table)
  setDT(df)[V1 %chin% l] 

我怀疑正如代码中提到的,我不明白为什么root不会在插入时更改(最后一行)。为什么它是同一个root每次?

1 个答案:

答案 0 :(得分:1)

此代码中的递归调用不会影响根节点,因为您发送根节点 在第一次(在那时root是NULL)并将进入if条件 否则不会影响root考虑下面的树并调用

 2 --  (call insert and gave it root node, data -4)
   / \
  1   10
     /
    5

第一次调用将检查root == NULL ---如果这是假的 将测试大于或小于2的任何值,并将在左节点上进行递归调用

    2 
   / \
  1-- 10  (call insert and gave it left child of root node, data -4)
     /
    5

并且此节点再次不为NULL将使该节点的左侧左侧的另一个递归调用为NULL

 2 
   / \
  1  10 
 /   /
NULL 5  (call insert and gave it left child of left child root node, data -4)

这里将创建新节点并返回将此节点分配到root的左侧并返回其上的指针以进行第一次调用

    2 
   / \
  1  10 
 /   /
-4   5

只是...... 我的建议在学习BST之前阅读了有关递归函数的好处