每天1題演算法題(5) 二叉樹展開為鍊錶

2022-07-15 21:21:13 字數 763 閱讀 5048

給定乙個二叉樹,原地將它展開為乙個單鏈表。

解答

將二叉樹展開為單鏈表之後,單鏈表中的節點順序即為二叉樹的前序遍歷訪問各節點的順序

遞迴實現

class

solution

}private

void preorder(treenode node, listtreenodelist)

treenodelist.add(node);

preorder(node.left, treenodelist);

preorder(node.right, treenodelist);}}

迭代實現

class

solution

list

list = new

arraylist();

stack

stack = new

stack();

stack.push(root);

while(!stack.isempty())

if(treenode.left != null

)

}for(int i=1;i) }}

Leetcode刷題 114 二叉樹展開為鍊錶

題解參考 寫樹的遞迴,首先要想清楚使用二叉樹的哪種遍歷方式 本題需要對最下面的子節點進行操作,而且我們操作的只能是父節點,注意,操作父節點,所以,符合要求的只能是後序遍歷。樹的遞迴操作,核心都是,在哪步操作根節點 就是合理選擇前中後序遍歷 給你二叉樹的根結點 root 請你將它展開為乙個單鏈表 展開...

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

思路很簡單 先把root的左子樹轉化為鍊錶移到右子樹,再將右子樹轉化為鍊錶移到左子樹後面,整個過程是遞迴進行的。definition for a binary tree node.class treenode def init self,x self.val x self.left none sel...

每天1題演算法題(1) 二叉樹的中序遍歷

給定乙個二叉樹,返回它的中序 遍歷。輸入 1,null,2,3 1 2 3輸出 1,3,2 1.最簡單也是最直接的,直接用遞迴演算法實現 class solution public void dfs treenode root,list list dfs root.left,list list.ad...