每日一題 二叉樹展開為鍊錶

2021-10-02 22:09:55 字數 907 閱讀 3190

思路很簡單:先把root的左子樹轉化為鍊錶移到右子樹,再將右子樹轉化為鍊錶移到左子樹後面,整個過程是遞迴進行的。

**:

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

def flatten(self, root: treenode) -> none:

"""do not return anything, modify root in-place instead.

"""def dfs(node):

if node is none: return none

if node.left is none and node.right is none: return node

left_tree = dfs(node.left)

right_tree = dfs(node.right)

node.right = left_tree

node.left = none

temp = node

while(temp.right): temp = temp.right

temp.right = right_tree

return node

dfs(root)

二叉樹展開為鍊錶

給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 將其展開為 以根節點為基準,先處理左子樹,然後處理右子樹,當其左右子樹均轉化為鍊錶之後,再處理以該根節點所代表的樹,將其右子樹賦給臨時變數,設root.right root.left,並將左子樹置空,然後將臨時變數賦給root.right。pub...

二叉樹展開為鍊錶

給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6 將其展開為 1 2 3 4 5 6解法1 前序遍歷,1.先儲存舊的右子樹,2.把左子樹賦值給root.right,把左子樹置為nil 3.遍歷找到最右邊的節點,把舊的右子樹接到最右邊的葉子節點上 4.根節點處理完成,向下遞...

二叉樹展開為鍊錶

給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6將其展開為 1 2 3 4 5 6 解法解法一 1.對樹進行先序遍歷,把每遍歷乙個節點就將該節點入隊 2.遍歷完之後,對佇列進行出隊操作 3.每齣乙個節點,就將該節點的left指標置為null,右指標指向下乙個出隊的節點 d...