title: 2019-8-23 二叉搜尋樹與雙向鍊錶
tags: 演算法,每日一題,二叉樹,鍊錶
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
2.1 思路解析
這裡有兩種方式來對中序遍歷進行重新連線。
方案一:使用乙個vector儲存遍歷的結果,然後將vector中的元素前後相連組成乙個雙向鍊錶。
方案二:只在在進行中序遍歷時就進行重新連線,主要就是要記錄當前節點之前的節點是哪乙個。
/*
struct treenode
};*/
class solution
treenode* convert1(treenode* prootoftree)else
}res[0]->left = null;
for(int i=0; iright = res[i+1];
res[i+1]->left = res[i];
}res[res.size()-1]->left = res[res.size()-2];
res[res.size()-1]->right = null;
return res[0];
}treenode* convert2(treenode* prootoftree)else
}return new_head;
}};
二叉搜尋樹與雙向鍊錶
1.問題描述 輸入一顆二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。來自 劍指offer 2.分析 對於二叉搜尋樹我們知道,樹的左孩子都比根節點要下,樹的右孩子都比根結點要大,根據這個特點,我們進行中序遍歷得到的序列就會滿足題目的要求,我們...
二叉搜尋樹與雙向鍊錶
問題描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。演算法 struct binarytreenode binarytreenode convert binarytreenode prootoftree plastnodeinl...
二叉搜尋樹與雙向鍊錶
排序二叉樹與雙向鍊錶.cpp 定義控制台應用程式的入口點。題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。思路 通過對一顆排序二叉樹的認識可知一顆排序二叉樹中序輸出就是有序的 通過後序遍歷讓子樹分別找到自己的left和rig...