题解 | #非递归形式——二叉树的中序遍历#
二叉树的中序遍历
https://www.nowcoder.com/practice/0bf071c135e64ee2a027783b80bf781d
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ #include <cstddef> #include <stack> #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型vector */ //中序遍历的非递算法,利用栈存储遍历路径上的节点地址 void in_order(TreeNode* Node,vector<int> &ans){ stack<TreeNode *> s; //这里将Node!=NULL放在while循环的目的是防止在外判断的话多 while (Node != NULL || !s.empty()) { while (Node != NULL) { s.push(Node); Node = Node->left; } TreeNode *temp = s.top(); s.pop(); ans.push_back(temp->val); Node = temp->right; } } vector<int> inorderTraversal(TreeNode* root) { vector<int> ans; in_order(root, ans); return ans; } };