10.27每日一题 144. 二叉树的前序遍历

本文介绍了一种解决二叉树前序遍历问题的方法,包括递归和非递归两种实现方式,并提供了详细的代码示例。

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

示例:

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

输出: [1,2,3]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?
通过次数192,753 | 提交次数285,362

代码实现

  • 递归实现
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
        
class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        self.re = []
        self.preorder(root)
        return self.re
    
    def preorder(self, root: TreeNode) -> None:
        if root:
            self.re.append(root.val)
            self.preorder(root.left)
            self.preorder(root.right)
  • 非递归实现
# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
        
class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        self.re = []
        if not root: return self.re
        stack = [root]
        while stack:
            cur = stack.pop(0)
            temp = []
            self.re.append(cur.val)
            while cur:
                if cur.right:
                    temp = [cur.right]+temp
                if cur.left:
                    self.re.append(cur.left.val)
                cur = cur.left
            stack = temp + stack
        return self.re
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
<think>我们正在处理用户关于Jenkins流水线中Git检出步骤的问题,特别是如何指定分支和凭证。 根据引用[2],我们了解到在Jenkins Pipeline中,git命令用于从版本控制系统(如Git)拉取代码,支持声明式和脚本式两种流水线语法。 用户需求:在stages中使用git checkout,并指定分支和凭证。 我们将分别展示声明式流水线和脚本式流水线中的实现方法。 声明式流水线(Declarative Pipeline): 在声明式流水线中,我们使用`git`步骤,它包含在`steps`块中。需要指定`url`、`branch`和`credentialsId`等参数。 脚本式流水线(Scripted Pipeline): 在脚本式流水线中,我们使用`checkout`步骤,并传入一个配置映射,其中包含GitSCM的配置,同样需要指定分支和凭证。 注意:凭证需要先在Jenkins中创建(例如用户名密码或SSH密钥),然后使用凭证的ID(credentialsId)。 下面分别给出两种写法的示例代码。</think>### Jenkins流水线中Git检出步骤配置 在Jenkins Pipeline中实现Git检出(checkout)并指定分支和凭证的操作方法如下: #### 1. **声明式流水线(Declarative Pipeline)** ```groovy pipeline { agent any stages { stage('Git Checkout') { steps { git( url: 'https://github.com/user/repo.git', // Git仓库地址 branch: 'main', // 指定分支 credentialsId: 'your-credentials-id', // Jenkins凭证ID extensions: [ [$class: 'CloneOption', depth: 1, timeout: 10] // 克隆选项 ] ) } } } } ``` #### 2. **脚本式流水线(Scripted Pipeline)** ```groovy node { stage('Git Checkout') { checkout([ $class: 'GitSCM', branches: [[name: 'main']], // 指定分支 userRemoteConfigs: [[ url: 'https://github.com/user/repo.git', // Git仓库地址 credentialsId: 'your-credentials-id' // Jenkins凭证ID ]], extensions: [ [$class: 'CloneOption', depth: 1, timeout: 10] // 克隆选项 ] ]) } } ``` #### 📌 关键参数说明: - **`credentialsId`** 需先在Jenkins凭证系统创建(路径:**Dashboard > Manage Jenkins > Credentials**),支持: - SSH密钥对 - 用户名/密码认证 - API令牌等[^2] - **`branch`** 支持分支名(如`main`)、标签(如`v1.0`)或通配符(如`*/feature-*`) - **`extensions`** 可选配置,常用功能: - `depth: 1`:浅克隆(仅最近提交) - `timeout: 10`:超时设置(分钟) - `changelog: false`:禁用变更日志生成 #### ⚠️ 注意事项: 1. 私有仓库必须配置`credentialsId`,否则会因权限失败[^2] 2. 分支名需与远程仓库严格匹配(区分大小写) 3. 推荐使用**声明式流水线**简化配置(语法更简洁)[^4] > 完整文档参考:[Jenkins官方Git插件文档](https://plugins.jenkins.io/git/)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jhaos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值