樹 二叉樹的前序遍歷 非遞迴寫法

2021-09-28 18:27:58 字數 608 閱讀 9795

今天碰到了這道題,寫一下怎麼實現樹的前序遍歷而不使用遞迴。

在我之前的部落格中曾經寫過,雖然遞迴和非遞迴有著緊密的聯絡(比如思想上),但是兩者在編寫上依然有很大差別。——主要體現在遞迴可以使用所謂整體法,而如果使用非遞迴的話用整體法很難想

如果使用非遞迴的話怎麼搞呢?我們只能先通過模擬,摸清大概是怎麼做的,然後再來談具體的實現。

談到遞迴,不得不談到棧這個資料結構——我們遞迴要從遞迴函式中返回,等價於出棧這個操作——同樣的,在非遞迴的寫法中我們完全可以引入棧,當搜尋完畢時出棧,直到棧頂元素是我們待處理的下乙個元素

有以上的理論基礎,我們的思路就比較清晰了:

/**

* definition for a binary tree node.

* struct treenode

* };

*/// 樹的左子樹和右子樹都是鍊錶的形式

class solution

// 進入右子樹

if (!s.empty())

}return res;

}};

二叉樹遍歷非遞迴寫法

資料結構考試前閒的蛋疼,整理課本。結點建立 struct node node root 中序遍歷 模擬深搜過程,在第一次回溯的時候輸出,即為中序遍歷 1 stackq1 2 node pre root 3while 1 4 10 一直往左走 11do 12while pre right null q...

二叉樹的非遞迴前序遍歷

二叉樹的非遞迴前序遍歷,需要借助棧 棧又是由順序表實現的 順序表的實現 首先我們需要乙個二叉樹 通過前序遍歷的陣列 abd gi j ce hk f 構建二叉樹 之前我們已經有二叉樹遞迴版的前序,中序,後序遍歷 通過前序遍歷的陣列 abd gi j ce hk f 構建二叉樹,並得到二叉樹的前序遍歷...

二叉樹的前序非遞迴遍歷

include 二叉樹的先序遞迴遍歷 include include 假定利用陣列a n 順序儲存乙個棧,用top 表示棧頂指標,top 1表示棧空,已知棧未滿,當元素x進棧時的操作為 x b.a top x c.a top x d.a top x top是先 1再運算,所以是從0開始的 而top ...