中序遍历的方法


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