36、二叉搜尋樹與雙向連結串列
阿新 • • 發佈:2019-01-01
整體思路:
函式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;
}
}