給定二叉樹,按垂序遍歷返回其結點值。解法:對位於 (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...