114 二叉樹展開為鍊錶

2021-10-08 07:56:06 字數 670 閱讀 4596

題目描述:

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

例如,給定二叉樹

將其展開為:

方法1:遞迴

主要思路:

(1)分析展開的情形,對於根節點,將左子樹展開成了鍊錶,再將右子樹展開成煉表,然後將左子樹展開的鍊錶掛到根節點的結點處,將原來的左結點置為null,將原來的右子樹展開的鍊錶掛到此時的左子樹展開的鍊錶的末尾;

(2)對每個結點遞迴上述過程即可;

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class

solution

};

114 二叉樹展開為鍊錶

首先是原地演算法的定義 演算法原地工作的含義是指不需要任何額外的輔助,演算法所需要的輔助空間不隨著問題的規模而變化,是乙個確定的值。通過觀察示例可以知道,我們可以猜想,大方向是前序遍歷。第一種思路 dfs。設定乙個全域性的指標 這種做法有點脫離原地演算法,因為多開闢了乙個指標變數 核心思想是拿到乙個...

114 二叉樹展開為鍊錶

一開始寫的 114 二叉樹展開為鍊錶 definition for a binary tree node.class treenode def init self,x self.val x self.left none self.right none class solution def flatt...

114 二叉樹展開為鍊錶

給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6將其展開為 1 2 3 4 5 6思路 從題目可以看出來要求先根遍歷。從根節點開始出發,先檢測其左子結點是否存在 1 找到左子結點最後面的右子節點 如果沒有,就是左子節點本身 2 將根節點和其右子節點斷開,把原右子節點連到原...