簡體   English   中英

二叉搜索樹中的遞歸堆棧

[英]Recursion stack in Binary search tree

我正在嘗試從二叉搜索樹中刪除一個節點。 雖然這個 function 工作正常,為什么我們需要設置 node->m_left 或 node->m_right 來返回 deletenode function 本身的值? 很難理解這種遞歸結構。
目前只為葉節點做

Node<T>*  deletenode(T key){
         return deletenode(key,this->root);
        }
        Node<T>*  deletenode(T key,Node<T>* node){
            Node<T>* temp;
         if(node==nullptr){
             return node;
         }
         if(key<node->m_data){
             node->m_left=deletenode(key,node->m_left);
         }
         if(key>node->m_data){
             node->m_right=deletenode(key,node->m_right);
         }
          
         

         return temp;
        }
        
        

您將左側或右側設置為在該分支上調用 deletenode function 的結果,而不是 function 本身。

遞歸的意思是:“如果我的樹有一個左分支和一個右分支,並且要刪除的項目在左分支中,那么創建一個具有相同右分支的新樹,但刪除要刪除的項目的結果從左分支作為它的左分支"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM