前序中序後序遍歷遞迴非遞迴實現

2021-08-22 13:49:12 字數 783 閱讀 8814

根-左兒子-右兒子

/**

* definition for binary tree

* struct treenode

* };

*/void preorder(treenode *root, vector

&v)

非遞迴遍歷時就是模擬棧,注意入棧順序即可

void preorder(treenode *root, vector

&v)

}

左二子-根-右兒子

void inorder(treenode *root, vector

&v)

非遞迴遍歷時要保證訪問根節點前已經訪問完左二子

void inorder(treenode *root, vector

&v)

if (!s.empty())

}}

左兒子-右兒子-根

void postorder(treenode *root, vector

&v)

後序遍歷要保證兒子們都遍歷完了才訪問根。用乙個輔助節點pre記錄上次訪問的節點,則輸出該節點時只有該節點為葉子節點或者pre為其兒子。否則把其兒子加入棧

void postorder(treenode *root, vector

&v)

else

}}

前序 中序 後序 非遞迴 實現

1.簡述 void preorder node root 3.中序非遞迴 前序中的root主要作為中間變數使用。這裡的root的意義是下乙個要進棧的結點,初始值為根結點。while root不為空 棧不為空 void inorder node root else 4.後序非遞迴 root表示下乙個要...

前序 中序 後序 非遞迴 實現

1.簡述 void preorder node root 3.中序非遞迴 前序中的root主要作為中間變數使用。這裡的root的意義是下乙個要進棧的結點,初始值為根結點。while root不為空 棧不為空 else 4.後序非遞迴 root表示下乙個要處理的結點,初始化為根結點,per表示上一次剛...

C 前序中序後序非遞迴遍歷

前序遍歷 根左右 迴圈到左子樹空,else轉右子樹,當乙個結點已經訪問右子樹時,該結點出棧 include include include include includeusing namespace std struct treenode class solution 左子樹到底了 else re...