递归实现
void midSearchTree(TreeNode *root){ if(root != NULL){ midSearchTree(root->left); cout << root->val << endl; midSearchTree(root->right); } } int main() { TreeNode *a = new TreeNode(5); TreeNode *b = new TreeNode(4); TreeNode *c = new TreeNode(3); TreeNode *d = new TreeNode(2); TreeNode *e = new TreeNode(1); a->left = b; a->right = c; b->left = d; b->right = e; midSearchTree(a); return 0; }
非递归实现
使用栈
// 非递归实现二叉树的中序遍历 void midSearchTree2(TreeNode *root){ stack<TreeNode*> st; if(root != NULL){ while(root != NULL || !st.empty()){ if(root != NULL){ st.push(root); root = root->left; }else{ root = st.top(); cout << root->val << endl; root = root->right; st.pop(); } } } }