987 二叉樹的垂序遍歷

2021-09-26 10:29:55 字數 1068 閱讀 4065

給定二叉樹,按垂序遍歷返回其結點值。

對位於 (x, y) 的每個結點而言,其左右子結點分別位於 (x-1, y-1) 和 (x+1, y-1)。

把一條垂線從 x = -infinity 移動到 x = +infinity ,每當該垂線與結點接觸時,我們按從上到下的順序報告結點的值( y 座標遞減)。

如果兩個結點位置相同,則首先報告的結點值較小。

按 x 座標順序返回非空報告的列表。每個報告都有乙個結點值列表。

示例 1:

輸入:[3,9,20,null,null,15,7]

輸出:[[9],[3,15],[20],[7]]

解釋: 

在不喪失其普遍性的情況下,我們可以假設根結點位於 (0, 0):

然後,值為 9 的結點出現在 (-1, -1);

值為 3 和 15 的兩個結點分別出現在 (0, 0) 和 (0, -2);

值為 20 的結點出現在 (1, -1);

值為 7 的結點出現在 (2, -2)。

示例 2:

輸入:[1,2,3,4,5,6,7]

輸出:[[4],[2],[1,5,6],[3],[7]]

解釋:根據給定的方案,值為 5 和 6 的兩個結點出現在同一位置。

然而,在報告 "[1,5,6]" 中,結點值 5 排在前面,因為 5 小於 6。

樹的結點數介於 1 和 1000 之間。

每個結點值介於 0 和 1000 之間。

解法:

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

for (auto p : tmp) m[p.first].push_back(p.second);

}vector> res;

for (auto kv : m) res.push_back(kv.second);

return res;

}};

987 二叉樹的垂序遍歷

給定二叉樹,按垂序遍歷返回其結點值。對位於 x,y 的每個結點而言,其左右子結點分別位於 x 1,y 1 和 x 1,y 1 把一條垂線從x infinity移動到x infinity,每當該垂線與結點接觸時,我們按從上到下的順序報告結點的值 y座標遞減 如果兩個結點位置相同,則首先報告的結點值較小...

演算法題 二叉樹的垂序遍歷

給你二叉樹的根結點 root 請你設計演算法計算二叉樹的 垂序遍歷 序列。對位於 row,col 的每個結點而言,其左右子結點分別位於 row 1,col 1 和 row 1,col 1 樹的根結點位於 0,0 二叉樹的 垂序遍歷 從最左邊的列開始直到最右邊的列結束,按列索引每一列上的所有結點,形成...

二叉樹層序遍歷 求二叉樹的層序遍歷

給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 3 9,20 15,7 示例1 輸入 返回值 1 2 示例2輸入 返回值 1 2,3 4,5 解題思路 重點是如何把在一層的節點放到一起,設定乙個引數專門放一層的節點 class t...