LintCode 378,二叉樹轉雙鏈表

2021-08-07 16:48:40 字數 989 閱讀 7309

在中序遍歷的基礎上考慮雙鏈表的串聯,中序遍歷用遞迴的手法表現就是:

doublylistnode dbl1 = bstsupport(root.left);

doublylistnode dbl2 = new doublylistnode(root.val);

doublylistnode dbl3 = bstsupport(root.right);

隨後進行子樹串聯工作,即當dbl1非空,就進行dbl1到dbl2的串聯;dbl3非空,就進行dbl2到dbl3的串聯:

if(dbl1!=null)

if(dbl3!=null)

因為上面這種串聯方式,為避免丟失資料,左子樹的返回值應該是左子樹串聯完成後的最後乙個節點,右子樹的返回值應為右子樹串聯完成後的第乙個節點。

在遞迴中如何讓各子樹知道自己是來自左子樹還是右子樹呢?簡單的方法,傳入乙個引數,這裡引數值為1即告訴遞迴函式,他來自左子樹,否則來自右子樹。

剩下的就是從中間點開始遍歷到鍊錶頭尾。

if(flag == 1)

return dbl2;

} else

return dbl2;

}

終止遞迴的條件就是傳入的引數為空。

完整**:

public class solution 

if(dbl3!=null)

if(flag == 1)

return dbl2;

}else

return dbl2;}}

else

}public doublylistnode bsttodoublylist(treenode root)

while(re.prev!=null)

return re;

}}

LintCode 等價二叉樹

題目描述 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4 就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4就不是等價的。做題思路 本題給出的bool型別的函式來判斷二叉樹是否等價...

lintcode 等價二叉樹

1 題目 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4就不是等價的。2 思路 對兩課二叉樹從以下幾種情況考慮 兩個均空,true...

Lintcode 等價二叉樹

1 問題描述 檢查兩棵二叉樹是否等價。等價的意思是說,首先兩棵二叉樹必須擁有相同的結構,並且每個對應位置上的節點上的數都相等。樣例 1 1 2 2 and 2 2 4 4就是兩棵等價的二叉樹。1 1 2 3 and 2 3 4 4 2 解題思路 從根節點開始判斷兩顆樹是否相等,先判斷結構是否相等,在...