1. 程式人生 > >36、二叉搜尋樹與雙向連結串列

36、二叉搜尋樹與雙向連結串列

整體思路:
函式f對該樹排序,返回值為連結串列的頭節點
f(左子樹)
將左子樹最後一個結點和root連線
f(右子樹)
將右子樹頭結點和root連線

public class Solution {
    public TreeNode Convert(TreeNode pRootOfTree) {
        if(pRootOfTree==null) return pRootOfTree;
        TreeNode head = Convert(pRootOfTree.left);
        TreeNode rleft = head;
        while
((rleft!=null)&&(rleft.right!=null)) rleft=rleft.right; if(rleft!=null) { rleft.right=pRootOfTree; pRootOfTree.left=rleft; } TreeNode rright = Convert(pRootOfTree.right); if(rright!=null) { pRootOfTree.right=rright; rright.left = pRootOfTree; } //此處特別注意左子樹為空的情況
return head==null?pRootOfTree:head; } }