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

2021-10-05 09:37:05 字數 698 閱讀 5494

前序遍歷-根左右:

迴圈到左子樹空,else轉右子樹,當乙個結點已經訪問右子樹時,該結點出棧

#include#include#include#include#includeusing namespace std;

struct treenode

};class solution //左子樹到底了

else

} return ans;

}};int main()//左子樹到底了

else

} return ans;

}};

後序遍歷-左右根:

後序非遞迴遍歷一般有兩種思路

①變左右根為根右左再取反

即先類似前序遍歷得到根右左的結果,然後再對結果取反,思路是簡單可行的,但是不方便對樹進行其他操作,只能看遍歷結果

class solution //左子樹到底了

else

} for(int i=ans.size()-1;i>=0;i--)

return fin;

}};

②當前結點沒有孩子或孩子都被訪問時訪問此結點

class solution 

else

} return ans;

}};

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

根 左兒子 右兒子 definition for binary tree struct treenode void preorder treenode root,vector v 非遞迴遍歷時就是模擬棧,注意入棧順序即可 void preorder treenode root,vector v 左二...

前序 中序 後序 非遞迴 實現

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表示上一次剛...