首页
学习
活动
专区
工具
TVP
发布

给永远比拿愉快

面朝大海,春暖花开
专栏作者
428
文章
749212
阅读量
41
订阅数
二叉树的遍历以及遇到的一些问题
这里以二叉树的前序遍历为例。输入前序遍历的数据元素(以空格作为空元素),构造二叉树,然后遍历二叉树输出每个数据元素所在的层。
卡尔曼和玻尔兹曼谁曼
2019-01-25
9940
LeetCode: Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth.
卡尔曼和玻尔兹曼谁曼
2019-01-25
4260
排序(四):堆排序
在直接选择排序中,待排序的数据元素集合构成一个线性表结构,要从有n个数据元素的线性表中选择出一个最小的数据元素需要比较n-1次。如果能把待排序的数据元素集合构成一个完全二叉树结构,则每次选择出一个最大(或最小)的数据元素只需比较完全二叉树的高度次,即lb(n)次。这就是堆排序的基本思想。 下面给出一个完全二叉树的性质(在代码中会用到): 对于具有n个结点的完全二叉树,如果按照从上到下和从左到右的顺序对所有结点从0开始顺序编号,则对于序号为i的结点有: (1)如果i>0,则序号为i的结点的双亲结点的序号为(i-1)/2("/"表示);如果i=0,则序号为i的结点为根结点,无双亲结点。 (2)如果2i+1<n,则序号为i的结点的左孩子结点的序号为2i+1;如果2i+1≥n,则序号为i的结点无左孩子。 (3)如果2i+2<n,则序号为i的结点的右孩子结点的序号为2i+2;如果2i+2≥n,则序号为i的结点无右孩子。 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]或者Key[i]>=Key[2i+1]&&key>=key[2i+2]。即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。
卡尔曼和玻尔兹曼谁曼
2019-01-25
3400
树和二叉树的转换
树和二叉树是两种不同的数据结构,树实现起来比较麻烦,但是树可以转换为二叉树进行处理,处理完以后再从二叉树还原为树。 下面说说转换的方法: 1. 树转换为二叉树 (1) 树中所有相同双亲结点的兄弟结点之间加一条连线。 (2) 对树中不是双亲结点第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线。 (3) 整理所有保留的和添加的连线,使每个结点的第一个孩子结点连线位于左孩子指针位置,使每个结点的右兄弟结点连线位于右孩子指针位置。 如下是树转换为二叉树的过程示例图:
卡尔曼和玻尔兹曼谁曼
2019-01-22
1.2K0
二叉树的初始化
比如我们给定这样的一组数据:{ 1, 2, 3, 4, 0, 5, 6, 0, 7 }(假设0代表空),则我们构建的二叉树是这样的:
卡尔曼和玻尔兹曼谁曼
2019-01-22
2.3K0
Leetcode: Balanced Binary Tree
题目: Given a binary tree, determine if it is height-balanced.
卡尔曼和玻尔兹曼谁曼
2019-01-22
3120
Leetcode: Minimum Depth of Binary Tree
题目: Given a binary tree, find its minimum depth.
卡尔曼和玻尔兹曼谁曼
2019-01-22
3460
Leetcode: Binary Search Tree Iterator
题目: Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.
卡尔曼和玻尔兹曼谁曼
2019-01-22
3290
Leetcode: Sum Root to Leaf Numbers
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.
卡尔曼和玻尔兹曼谁曼
2019-01-22
2850
Leetcode: Populating Next Right Pointers in Each Node
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.
卡尔曼和玻尔兹曼谁曼
2019-01-22
2960
Leetcode: Construct Binary Tree from Inorder and Postorder Traversal
题目: Given inorder and postorder traversal of a tree, construct the binary tree.
卡尔曼和玻尔兹曼谁曼
2019-01-22
4030
Leetcode: Construct Binary Tree from Preorder and Inorder Traversal
题目: Given preorder and inorder traversal of a tree, construct the binary tree.
卡尔曼和玻尔兹曼谁曼
2019-01-22
3200
Leetcode: Binary Tree Postorder Traversal(二叉树后序遍历)
题目: Given a binary tree, return the postorder traversal of its nodes’ values.
卡尔曼和玻尔兹曼谁曼
2019-01-22
3300
Leetcode: Binary Tree Inorder Traversal(二叉树中序遍历)
题目: Given a binary tree, return the inorder traversal of its nodes’ values.
卡尔曼和玻尔兹曼谁曼
2019-01-22
5490
Leetcode: Binary Tree Preorder Traversal(二叉树前序遍历)
题目: Given a binary tree, return the preorder traversal of its nodes’ values.
卡尔曼和玻尔兹曼谁曼
2019-01-22
3220
使用graphviz绘制二叉树(二)
在上一篇博客中《使用graphviz绘制二叉树》,提到了一些graphviz的简单的用法。可是如果用上一篇文章中介绍的方法绘制二叉树的话,画出来是及其丑陋的,子节点位置摆放不太好看。自己可以动手试试! 比如我编写了一个tree.dot文件:
卡尔曼和玻尔兹曼谁曼
2019-01-22
1.8K0
使用graphviz绘制二叉树
Graphviz是开源免费跨平台图形绘制工具,使用其提供的dot语法,可以很方便的用来绘制“图”结构(这里的图可以理解为是数学上或者计算机科学中所说的图),并支持多种格式输出。 ###语法 首先,来简单看一下dot语法。 1. 使用digraph关键字定义有向图,使用->表述节点之间的关系。如: (g是图的名称,a,b,c是三个节点)
卡尔曼和玻尔兹曼谁曼
2019-01-22
1.1K0
堆排序
堆排序采用的数据结构是完全二叉树,所以在介绍堆排序之前,我们先看看完全二叉树的定义及性质。
卡尔曼和玻尔兹曼谁曼
2019-01-22
3560
没有更多了
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档