圖像(方形圖像)可以作爲樹存儲:如果圖像爲白色,則節點爲白色,如果圖像爲黑色,則爲黑色,如果圖像包含兩者,則爲混合。白色和黑色節點是葉子,而混合節點恰好有4個孩子,代表圖像中的4個象限。給定2個圖像(樹),找到代表它們相交的圖像。 (交叉點:B^B→B,B→W→W,W→W→W) 這是一個谷歌訪談問題圖像數據結構
Q
圖像數據結構
0
A
回答
-1
由於二者都表示爲二叉樹,所以必須遍歷樹結構從根開始,隨時檢查兩棵樹中節點的顏色,並將結果存儲在另一棵樹中。如果黑色或白色,則停止進一步移動。否則,如果它們中的任何一個在該節點中進一步混合遍歷,直到找到它們中的單個顏色。
+0
這不一定是二叉樹,混合節點有4個孩子 – 2011-12-21 04:56:14
+0
對於任何一種樹,這個算法應該工作 – FUD 2011-12-21 05:02:27
1
下面是一個簡單的方法:使用相同的順序同時遍歷兩棵樹。當你這樣做的時候建立一個輸出樹。然後:
- 如果你看到兩個樹混合節點,輸出混合節點
- 如果你看到一棵樹混合節點,但在另一方面,輸出白色節點白色節點(而忽略遍歷中的混合節點)
- 如果您在一棵樹中看到混合節點,而在另一棵樹中看到黑色節點,請將混合節點及其子節點複製到輸出樹
- 如果看到兩個白色節點,白色節點
- 如果看到兩個黑色節點,則輸出黑色節點
這有可能創建一個實際上只有白色孩子的混合節點,所以您可能需要一個壓縮步驟,在該步驟中遍歷樹摺疊只有白色孩子的混合節點。
編輯:我想你可以避免壓縮步驟,讓你的遞歸知道是否在下面找到輸出黑色節點(如果答案是否定的,則放入白色葉子)。
相關問題
- 1. OpenCV的墊圖像數據結構
- 2. 圖像鏈接的數據結構
- 3. 樹像數據結構
- 4. 數據庫結構圖
- 5. 圖形數據結構
- 6. 數據結構,重圖
- 7. [數據結構]:選擇一個數據結構來構建一個圖表
- 8. 地圖數據結構的地圖
- 9. 應該類結構鏡像數據庫結構?
- 10. DOM中的數據結構像ANSI C
- 11. 像java中的數據結構樹
- 12. 綁定radgrid控件像數據結構
- 13. 數據結構
- 14. 數據結構
- 15. 數據結構
- 16. 數據結構++
- 17. 數據結構
- 18. 表示圖像矩陣的理想數據結構是什麼?
- 19. 什麼數據結構代表這些圖像?
- 20. 帶有延遲加載圖像的結構化數據?
- 21. Matlab error不支持的圖像數據類型'結構'
- 22. 在Python數據結構中高效地存儲多個圖像
- 23. 如何從節點和弧的數據結構中創建圖數據結構?
- 24. angularjs數據結構不會在視圖
- 25. 圖表數據結構:DFS vs BFS?
- 26. 向量和圖層數據結構
- 27. autocad圖紙中的數據結構
- 28. 圖形結構化數據庫和Php
- 29. ggplot結構化數據箱線圖
- 30. 使用C++的圖數據結構
「這是谷歌面試問題」 - 但這不是一個真正的問題。 – 2011-12-21 04:04:05
真正的問題是什麼? – 2011-12-21 04:05:07
您似乎在發佈您在Google面試時被問及的所有問題。 – 2011-12-21 04:06:14