給定乙個二叉樹,原地將它展開為鍊錶。
例如,給定二叉樹
解題思路:借鑑windliang發布在leetcode題解上的第乙個思路,利用先序遍歷,將二叉樹展開成乙個鍊錶。
將左子樹插入到右子樹的地方;
將原來的右子樹接到左子樹的最右邊節點;
考慮新的右子樹的根節點,一直重複上邊的過程,直到新的右子樹為 null;
其c++**如下:
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
pre-
>right = root-
>right;
// 左子樹的葉子節點的右節點拼接右子樹
root-
>right = root-
>left;
//將當前節點的左子樹拼接為右子樹
root-
>left =
null
;//將左子樹變為null
root = root-
>right;
//迭代至當前節點的下乙個右子節點,因為左子節點已經為空}}}};
二叉樹 二叉樹
題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...
樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹
目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...
114 二叉樹展開為鍊錶
首先是原地演算法的定義 演算法原地工作的含義是指不需要任何額外的輔助,演算法所需要的輔助空間不隨著問題的規模而變化,是乙個確定的值。通過觀察示例可以知道,我們可以猜想,大方向是前序遍歷。第一種思路 dfs。設定乙個全域性的指標 這種做法有點脫離原地演算法,因為多開闢了乙個指標變數 核心思想是拿到乙個...