生成二叉树

# 节点类
class Node(object):def __init__(self, x):self.val = xself.left = Noneself.right = None
# 树生成代码
def generate_tree(vals):if len(vals) == 0:return Noneque = [] # 定义队列fill_left = True # 由于无法通过是否为 None 来判断该节点的左儿子是否可以填充,用一个记号判断是否需要填充左节点for val in vals:node = Node(val) if val else None # 非空值返回节点类,否则返回 Noneif len(que)==0:root = node # 队列为空的话,用 root 记录根结点,用来返回que.append(node)elif fill_left:que[0].left = nodefill_left = False # 填充过左儿子后,改变记号状态if node: # 非 None 值才进入队列que.append(node)else:que[0].right = nodeif node:que.append(node)que.pop(0) # 填充完右儿子,弹出节点fill_left = True # return root
# 定义一个dfs打印中序遍历
def dfs(node):if node is not None:dfs(node.left)print(node.val, end=' ')dfs(node.right)
# 定义一个bfs打印层序遍历
def bfs(node):que = []que.append(node)while que:l = len(que)for _ in range(l):tmp = que.pop(0)print(tmp.val, end=' ')if tmp.left:que.append(tmp.left)if tmp.right:que.append(tmp.right)print('|', end=' ')# test
null = None
vals = [3,9,20,null,null,15,7]
tree = generate_tree(vals)
print('中序遍历:')
dfs(tree) # 9 3 15 20 7
print('\n层序遍历:')
bfs(tree) # 3 | 9 20 | 15 7 |

生成列表

#定义节点
class ListNode():def __init__(self, x):self.val = xself.next = None
#将传入的数组转化为链表
def create_linked_list(arr):head = ListNode(arr[0])cur = headfor i in range(1, len(arr)):cur.next = ListNode(arr[i])cur = cur.nextreturn head
#传入链表头节点,以数组形式返回
def print_linked_list(head):cur = headres = []while cur:res.append(cur.val)cur = cur.nextreturn res
class Solution():def mergeTwoLists(self, l1, l2):pre = ListNode(0)head = prewhile l1 and l2:if l1.val >= l2.val:pre.next = l2l2 = l2.nextelse:pre.next = l1l1 = l1.nextpre = pre.nextpre.next = l1 if l1 else l2return head.next
if __name__ == "__main__":head1 = create_linked_list([1, 2, 4])head2 = create_linked_list([1, 3, 4])solution = Solution()sorted_lists = solution.mergeTwoLists(head1, head2)print(print_linked_list(sorted_lists))
#输出:[1, 1, 2, 3, 4, 4]

注:放到本地可以直接跑哦~

猜你喜欢:

【Leetcode】Python 代码本地构造二叉树、链表相关推荐

  1. python构造一个二叉树_二叉树-链表存储,用二叉树构造表达式(Python实现)

    既然用到二叉树了,直观上链表的方式比较容易接受,下面用python实现简单的二叉树.二叉树是递归结构,Python的list也是递归结构,基于list类型很容易实现二叉树: 下面是函数 def bin ...

  2. 刷题记录8---验证二叉搜索树+二叉树的层序遍历+从前序与中序遍历序列构造二叉树+二叉树展开为链表+二叉树的最近公共祖先

    前言 所有题目均来自力扣题库中的hot 100,之所以要记录在这里,只是方便后续复习 98.验证二叉搜索树 题目: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜 ...

  3. 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...

  4. leetcode 105. 从前序与中序遍历序列构造二叉树 c语言递归解法

    如题: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素.例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3 ...

  5. 单链表反转的原理和python代码实现

    链表是一种基础的数据结构,也是算法学习的重中之重.其中单链表反转是一个经常会被考察到的知识点. 单链表反转是将一个给定顺序的单链表通过算法转为逆序排列,尽管听起来很简单,但要通过算法实现也并不是非常容 ...

  6. python算法与数据结构-二叉树的代码实现(46)

    阅读目录 一.二叉树回忆 二.二叉树比链表好在哪里? 三.二叉树的节点定义(C语言版) 四.定义一个二叉树(C语言版) 五.初始化树(C语言版) 六.创建节点(C语言版) 七.插入节点(C语言版) 八 ...

  7. 二叉树的中序遍历_Go 刷 leetcode从前序与中序遍历序列构造二叉树

    今天为大家讲解 LeetCode 第 105 题,是一道关于数组和树的题目. 题目描述 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 前序遍历 pre ...

  8. [Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] copyOfRange class Solution {public TreeNode constructFromPrePost(int[] pre, int[] ...

  9. [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...

最新文章

  1. [CTO札记]搜索结果第3页,也会进来
  2. 个人重构之一般用户实现
  3. CentOS 6.x搭建Open***实现双IDC互联
  4. 剑指OFFER之跳台阶(九度OJ1388)
  5. C++ vector类详解
  6. mac修改jupyter notebook启动时的打开目录
  7. elementui 表格英文加数字排序_解决vue elementUI中table里数字、字母、中文混合排序问题...
  8. 苹果手机数据线充不了电_自动洗地机充不了电,洗地机厂家
  9. 修改注册表阻止Office XP发送错误报告
  10. 红米K40游戏 红米Note10Pro等出现dm-verity corruption your device is corrupt 设备在5秒内关机 无限重启 怎么解决
  11. 使用第三方sdk时问题
  12. [C#][转载]C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
  13. 探讨服务端自定义生成PDF的几种方案
  14. c++面试常见题·Part 2 数据结构和STL
  15. IT小盆友:注意20种习惯最耗元气
  16. usb转vga转换器
  17. 爆火的Web3.0背后,百度营销如何抓住流量密码?
  18. 扎根基层一线 助力社区(村)发展
  19. Qt excel 操作使用说明
  20. python中的模块和类_Python模块与类

热门文章

  1. HD Piggy-Bank完全背包
  2. ASP.NET MVC 3 Beta 发布了
  3. QTP的那些事--调用外部的文件的方法
  4. Spring Developer Tools 源码分析:二、类路径监控
  5. Windows 使用 Gogs 搭建 Git 服务器
  6. python pickle模块操作
  7. 【APUE】Chapter17 Advanced IPC sign extension 结构体内存对齐
  8. 《Linux内核设计与实现》读书笔记(十四)- 块I/O层
  9. Android 帧动画何时停止播放
  10. HTTP referer/HTTP referrer