leetcode 二叉樹尋路 細節

2021-10-02 12:23:53 字數 868 閱讀 1545

在一棵無限的二叉樹上,每個節點都有兩個子節點,樹中的節點 逐行 依次按 「之」 字形進行標記。

如下圖所示,在奇數行(即,第一行、第三行、第五行……)中,按從左到右的順序進行標記;

而偶數行(即,第二行、第四行、第六行……)中,按從右到左的順序進行標記。

給你樹上某乙個節點的標號 label,請你返回從根節點到該標號為 label 節點的路徑,該路徑是由途經的節點標號所組成的。

示例 1:

輸入:label = 14

輸出:[1,3,4,14]

示例 2:

輸入:label = 26

輸出:[1,2,6,10,26]

1 <= label <= 10^6

題意就是在乙個偶數行反轉的完全二叉樹中,找到編號為 label 的節點,然後將根節點到 label 的路徑輸出。

這道題特點在於需要推一定的式子。範圍不是很大,如果懶得思考,可以直接建樹找到label節點,然後推上去。不過這裡想通過計算的方式解決這道題。

首先,我們需要找到label節點處於第幾行。

我們分析可以得到:第 i 行的區間範圍是[ 2(i-1), 2i-1]. 可以枚舉行一層層找label.

找到 label 所在行後,再分析可得到:

先將label輸出。

將 label 在該行反轉一下。 反轉公式就是 2(i-1) + 2i-1-label.

label /= 2得到其父結點。

class solution 

}vectorans;

while(label)

reverse(ans.begin(),ans.end());

return ans;

}};

二叉樹尋路

在一棵無限的二叉樹上,每個節點都有兩個子節點,樹中的節點 逐行 依次按 之 字形進行標記。如下圖所示,在奇數行 即,第一行 第三行 第五行 中,按從左到右的順序進行標記 而偶數行 即,第二行 第四行 第六行 中,按從右到左的順序進行標記。給你樹上某乙個節點的標號 label,請你返回從根節點到該標號...

1104 二叉樹尋路 python

在一棵無限的二叉樹上,每個節點都有兩個子節點,樹中的節點 逐行 依次按 之 字形進行標記。如下圖所示,在奇數行 即,第一行 第三行 第五行 中,按從左到右的順序進行標記 而偶數行 即,第二行 第四行 第六行 中,按從右到左的順序進行標記。給你樹上某乙個節點的標號 label,請你返回從根節點到該標號...

leetcode 二叉樹 對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...