劍指offer 面試題36 二叉搜索樹與雙向鏈表

題目描述
輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。

tips: 使用遞歸,使用一個指針的引用,來記錄轉換爲鏈表後的最後一個元素

class Solution {
public:
    TreeNode* Convert(TreeNode* pRootOfTree)
    {
        if(pRootOfTree==NULL) {
            return NULL;
        }
        TreeNode* pLast=NULL;
        cursiveConvert(pRootOfTree,pLast);
        while(pLast->left) {
            pLast=pLast->left;
        }
        return pLast;
    }
    void cursiveConvert(TreeNode* pRoot,TreeNode*& pLast) {
        if(pRoot==NULL) {
            return;
        }
        cursiveConvert(pRoot->left,pLast);
        if(pLast!=NULL) {
            pRoot->left=pLast;
            pLast->right=pRoot;
        }
        pLast=pRoot;
        cursiveConvert(pRoot->right,pLast);
    }
};
發佈了94 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章