算法题---中序遍历二叉树

 

递归实现

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();
            }
            
        }
    }
}

 

posted @ 2020-11-04 17:27  威威后花园  阅读(125)  评论(0编辑  收藏  举报