中序遍歷:左-根-右
中序遍歷的非遞迴和前序遍歷的非遞迴很相似,只是前序遍歷是根-左-右,而中序遍歷左-根-右,也就是說,中序遍歷是:先遇到根節點不訪問,而是直接壓入棧,當左路節點為空時,取出左路節點,並訪問左路節點的右子樹。
①若根的左子樹不為空,則將其入棧,並將它的左子樹當成當前根,然後再對當前根進行相同的處理;
②若當前根的左子樹為空,則取出該節點,而後將的右子樹置為當前節點,看其是否為空;
③若不為空,則重複以上兩個操作;
④若為空,則讓該節點出棧,並取出棧頂節點,並將出棧的節點的右子樹置為當前節點,看其是否為空,重複③和④操作;直到當前節點為null且棧為空時,遍歷結束。
void binarytreeinordernonr(btnode* root)//中序遍歷的非遞迴
//2.取出左路節點,並訪問左路節點的右子樹
btnode* top = stacktop(&st);
printf("%c ", top->_data);
stackpop(&st);
cur = top->_right;
} printf("\n");
}
二叉樹中序非遞迴遍歷
definition for a binary tree node.struct treenode class solution else return out 中序非遞迴遍歷de演算法思想 根據中序遍歷的順序,對於任意乙個結點,優先訪問左孩子,再繼續訪問該左孩子的左孩子,然直到遇到左孩子結點為空的...
資料結構 二叉樹的遞迴 非遞迴遍歷
複習一下二叉樹遞迴非遞迴的先中後序遍歷 寫非遞迴後序遍歷的時候卡殼了,參考了一下網上的思路,大概有兩種,一種是標記每個節點是否有走過,如果父節點的左右子節點都標記訪問過,則可以訪問父節點 一種是定義乙個指標,指向上乙個訪問的節點,如果某父節點的右子節點為null或者是上乙個訪問的節點,則該父節點應當...
資料結構 二叉樹遍歷非遞迴實現
資料結構中二叉樹的遍歷主要分為先序,中序和後序。順序是相對根節點來說的。先序中序非遞迴實現比較簡單,後序較為複雜些,需要判斷右子樹是否為空或遍歷完。以下為三種遍歷方法的非遞迴c實現 include include typedef struct binode binode,bitree typedef...