遍歷結果推導二叉樹

Andy Niu發表於2013-11-29

1、根據前序與中序,推導二叉樹。舉例來說:前序ABC,中序CAB,由前序直到A為根節點,由中序知道A的左邊為左孩子,右邊為右孩子。C為左孩子,B為右孩子。

2、思考,由前序和後續,能否退出二叉樹?

  前序ABC,後序CBA。由前序ABC知道A為根節點,後面分成兩塊,每一塊都是前序,前面一塊為左孩子,後面一塊為右孩子。由後序知道A為根節點,前面分成兩塊,每一塊都是後序,前面一塊為左孩子,後面一塊為右孩子。都是分成兩塊,對於分成的兩塊,前面一塊元素集合相同,後面一塊元素集合相同。注意,集合不考慮元素的順序。這樣,就有兩種情況:

  a、前面一塊為BC,後面一塊為空

  b、前面一塊為空,後面一塊為BC

  因此,根據前序與後序不能推匯出二叉樹。

3、思考,前序與後序一定不能推匯出二叉樹嗎?

  考慮,前序ABC,後續BCA,同樣道理,分成兩塊的情況:

  a、前面一塊為B,後面一塊為C

  b、前面一塊為BC,後面一塊為空

  c、前面一塊為空,後面一塊為BC

  分成兩塊,每一塊都是前序或者後序,但是,前序與後序的順序一定不一樣,對於b,c兩種情況,前序與後序順序一樣,因此排除,只剩下a情況。推匯出唯一的二叉樹。

因此,根據前序與後序不能推匯出二叉樹,但是某些特殊情況下,可以推匯出二叉樹。

相關文章