中序遍歷的方法


1:遞歸法

vector<int> result;
getValue(TreeNode* root, vector<int>& result) {
  if (root != nullptr) {
    getValue(root->left, result);
    result.emplace_back(root->val);
    getValue(root->right, result);
}

 

2. 迭代法

while (!stack.empty() || root != nullptr) {
  // 1. 一直遍歷左子樹   
while (root != nullptr) {     stack.push(root);     root = root -> left;   }

  // 2. 直到無法遍歷,從stack取出一個值,把value放入vector   root
= stack.top();   stack.pop();
  result.emplace_back(root->val);

  // 3. 檢查右子樹,若右子樹有值,則以右子樹為root進行遍歷(步驟1)
  // 若右子樹為空,則繼續從stack取值(步驟2)
  root
= root -> right; }

 

理解並熟練掌握迭代法!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM