LeetCode 94 Binary Tree Inorder Traversal
思路
递归很简单写出来,主要说迭代的思路。
有stack存储节点。每次loop,一直往左下方走,将路径上的节点全部入栈。找到最左边的节点后,输出该节点,然后从该节点的右子树重复这个过程。此思路的本质是将父节点划归至寻找最左节点的路径中,从而压入栈。
代码
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> rs;
stack<TreeNode*> stk;
while(root || !stk.empty()) {
while(root) {
stk.push(root);
root = root->left;
}
root = stk.top();
stk.pop();
rs.push_back(root->val);
root = root->right;
}
return rs;
}
};