LeetCode94 - Binary Tree Inorder Traversal--二叉树的递归和非递归中序遍历
递归方法:
非递归:要借助栈,可以利用C++ STL中的stack。首先将根节点压栈,然后压入栈顶元素的左节点直到叶子节点,然后访问叶子节点后压入该节点的右子节点。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int> result; if(root) { stack<TreeNode *> s; TreeNode * p; s.push(root); while (!s.empty()) { while (p = s.top()) s.push(p->left); s.pop(); if (!s.empty()) { p = s.top(); result.push_back(p->val); s.pop(); s.push(p->right); } } } return result; } };