二叉树的先序遍历

题目
给定一个二叉树,返回它的前序遍历。

思想
二叉树的前序遍历是根左右,这个稍微比中序遍历和后序遍历好理解。以c++使用非递归形式实现。

  vector<int> preorderTraversal(TreeNode* root) {
        vector<int> result;
        stack<TreeNode*> s;   //初始化一个栈
        TreeNode* p = root;
        while(p || !s.empty()){
            if(p){
                result.push_back(p->val);  
                s.push(p);
                p = p->left;
            }
            else  //如果左节点不存在,就向当前节点的右节点探寻
            {
                p = s.top();   //取栈顶节点
                s.pop();   //栈顶节点出栈
                p = p->right;
            }
        }
        return result;
    }
发布了20 篇原创文章 · 获赞 0 · 访问量 306

猜你喜欢

转载自blog.csdn.net/weixin_42126232/article/details/103827590