zoukankan      html  css  js  c++  java
  • 144. 二叉树的前序遍历

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

     示例:

    输入: [1,null,2,3]
    1

    2
    /
    3

    输出: [1,2,3]


    链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal

    前序遍历的顺序是根-左-右

    思路是:

    1. 先将根结点入栈

    2. 出栈一个元素,将右节点和左节点依次入栈

    3. 重复 2 的步骤

    总结: 典型的递归数据结构,典型的用栈来简化操作的算法。

    递归:

    /**
     * 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> preorderTraversal(TreeNode* root) {
            vector<int>v;
            vector<TreeNode*>s;
            while(root!=NULL||!s.empty()){
                while(root!=NULL){
                    v.push_back(root->val);
                    s.push_back(root);
                    root=root->left;
                }
                root=s.back()->right;
                s.pop_back();
            }
            return v;
        }
    };
    class Solution(object):
        def preorderTraversal(self, root):
            if not root:return []
            stack, res = [root], []
            while stack:
                root = stack.pop()
                if root:
                    res.append(root.val)
                    if root.right:
                        stack.append(root.right)
                    if root.left:
                        stack.append(root.left)
            return res
  • 相关阅读:
    tc: Linux HTTP Outgoing Traffic Shaping (Port 80 Traffic Shaping)(转)
    Linux TC的ifb原理以及ingress流控-转
    插件+组件+空间
    Q查询条件
    django中的分页标签
    QuerySet
    url
    view
    HttpReponse
    装饰器
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13274335.html
Copyright © 2011-2022 走看看