2叉树先序排列(c#)

23 篇文章 0 订阅

问题描述

给定一个二叉树的根,返回其节点的先序排列值。


示例

  • 示例1

Input: root = [1,null,2,3]
Output: [1,3,2]

  • 示例2

Input: root = []
Output: []

  • 示例3

Input: root = [1]
Output: [1]


解决方案描述

2叉树的先序排列是左中右的顺序排列, 到该2叉树的最左边节点,
然后输出中间节点,然后输出右边节点。每个节点都按照这个顺序输出。由于需要保存访问过的节点,所以使用栈来保存。

  1. 判断根节点是否为空,为空,则返回空的列表。
  2. 将根节点存入栈中,且将根节点赋值给当前节点。右子节点存在flg设为真。结果列表初始化为空。
  3. 循环遍历栈中节点,执行下面操作:
    • 当前节点的左节点不为空,且右子节点存在flg为真是,循环执行下面的操作:
      将当前节点的左节点压入栈中,并将当前节点的左节点赋值给当前节点。
    • 当栈非空时,弹出栈顶节点,赋值给当前节点。
    • 将当前节点的值加入到结果列表中。
    • 如果当前节点的右子节点非空,则将该右子节点压入栈中,并将该右子节点赋值给当前节点,右子节点flg设为真,
      否则右子节点flg设为假。

具体代码见下面的链接

2叉树先序排列(c#)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值