Tree traversals(树的遍历)和LeetCode99( Recover Binary Search Tree)

树的遍历

  • 树(tree)作为一种非线性数据结构,可以以不同的方式对其进行遍历(traverse),如前序(preorder),中序(inorder)和后序(postorder)。
  • 数组(Array),链表(Linked List),队列(Queues),和栈(Stack)这些线性数据结构只能使用单一的逻辑结构来遍历他们。这展现Tree这种数据结构的优势。

树知识点

这篇文章主要包括

  1. **深度优先遍历(Depth First Searching)**方式及其应用
  2. 广度优先遍历(Breadth First or Level Order Searching)
  3. 时空复杂度分析(Time and Auxiliary Space Complexity)
  4. LeetCode99题,修复BST二进制搜索树,算法+伪代码+Code。

DFS和BFS例子

在这里插入图片描述

深度优先结果
  1. 前序遍历(根–>左–>右):1 2 4 5 3;
  2. 中序遍历(左–>根–>右):4 2 5 1 3;
  3. 后序遍历(左–>右–>根):4 5 2 3 1;
广度优先结果

1 2 3 4 5

来一个更难的例子练练手
在这里插入图片描述

中前后序算法+应用场景

  1. Inorder Traversal:

Algorithm Inorder(tree)

  1. Traverse the left subtree, i.e., call Inorder(left-subtree)
  2. Visit the root.
  3. Traverse the right subtree, i.e., call Inorder(right-subtree)

Application: 二进制搜索树(Binary Search tree)的排序和倒序
BST中,左节点.value<root.value<右节点.value,对于所有子树都必须满足。中序遍历的结果恰好是从小到大非递减的树的节点值的表示。
如果想要得到一颗非递增的二进制搜索树,可以使用中序遍历的变体,其中将中序遍历结果颠倒即可。

  1. Preorder Traversal:

Algorithm Inorder(tree)

  1. Visit the root.</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值