#二叉搜索树转化为双向链表,不理解29-32为什么一直返回pRootOfTree.left,顺便贴下和老外的聊天记录
#已解决,29-32行的问题:因为这是在线测试,他要返回链表头节点才能通过,比如我给出的例子,他要返回1才能通过= =,你给他注释掉,返回的是5,只是返回值不同,但链表已经构建完成了
class TreeNode:
def __init__(self, x):
self.value = x
self.left = None
self.right = None
class Solution:
def Convert(self, pRootOfTree):
if not pRootOfTree:
return pRootOfTree
if not pRootOfTree.left and not pRootOfTree.right:
return pRootOfTree
self.Convert(pRootOfTree.left)
left = pRootOfTree.left
if left:
while(left.right):
left = left.right
pRootOfTree.left, left.right = left, pRootOfTree
self.Convert(pRootOfTree.right)
right = pRootOfTree.right
if right:
while(right.left):
right = right.left
pRootOfTree.right, right.left = right, pRootOfTree
while(pRootOfTree.left):
pRootOfTree = pRootOfTree.left
return pRootOfTree
p = TreeNode(5)
p.left = TreeNode(3)
p.right = TreeNode(7)
p.left.left = TreeNode(1)
p.left.right = TreeNode(4)
p.right.left = TreeNode(6)
p.right.right = TreeNode(8)
sol = Solution()
sol.Convert(p)
me (user_b2d)
CHATBOT: Someone just joined this session.
user_69c
hey
me (user_b2d)
translate a search tree to a link
me (user_b2d)
hey , english not good
me (user_b2d)
sorry
me (user_b2d)
i could not understaned line 29-32
me (user_b2d)
why return pRootOfTree.left as result CHATBOT: Someone just joined this session.
user_0e5 left the session.
user_69c
Sorry, I won't be able to help since I don't know the code origin
me (user_b2d)
ok, thankyou anyway
user_69c left the session.
me (user_b2d)
Binary Search Tree Converted to Bidirectional Link List