栈的应用 中缀转化为后缀 二叉树 冒泡排序 二分查找

#栈的应用
#1,中缀表达式转换成后缀表达式
#2,后缀表达式的计算
#例如:中缀的表达式:1+23/4
#后缀表达式:操作数在前,操作符在后
#1+2
3/4–> 1 2 3 4 1 - / +
#一个栈的空间存一个字节,一个操作符一次运算两个操作数
栈的应用 中缀转化为后缀 二叉树 冒泡排序 二分查找树 与 二叉树
#计算机中的树一般是指’倒悬树’–即树根在上,分支在下。
#例如,计算机当中的文件管理:一个文件夹下面还有许多小的文件夹。
#二叉树:
#性质1,在第i层上,节点的个数为2
*(i-1)个。
#性质2,深度为k的二叉树至多有2**k-1个节点(k>=1)。
#性质3,对任何一棵二叉树,若叶子节点为n0,度为2的节点数为n1,则n0=n1+1
#度:除了叶子结点外的所有节点-1,最后一层为叶子结点。【有几个分支,就是几度】
#度的节点数=度+1,叶子结点=度的节点数+1

#二叉树得遍历:
#1,DLR:先(根)序遍历
#2,LDR:中(根)序遍历
#3,LRD:后(根)序遍历
#重点在DLR:
#1,深度优先:先将第一个分支遍历结束之后再遍历另一个分支。
#2,广度优先:从上到下,从左到右,按层遍历。

#满二叉树:
#深度为k且有2**k-1个节点的二叉树称为满二叉树。
#满二叉树的特点:每一层上的结点数总是最大结点数。(左右对称)
#完全二叉树:如果深度为k,由n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应,该二叉树称为完全二叉树,–从上到下,从左到有,不断编号。
#不完全二叉树:不按编号。

#二叉树的存储结构:自上而下、自左至右
#链式存储结构
#二叉链表结点,有三个域:一个数据域,两个分别
#指向左右子结点的指针域
#三叉链表结点:除二叉链表的三个域外,再增加一
#个指针域,用来指向结点的父结点

栈的应用 中缀转化为后缀 二叉树 冒泡排序 二分查找#算法
#冒泡排序

list_01 = [2,3,1,5]
print('排序之前:',list_01)
geshu = len(list_01)
for i in range(0,geshu-1):
#这个循环负责设置冒泡排序进行的次数
#(比如说n个数,则只要进行n-1次冒泡,就可以把这n个数排序好)
    for j in range(0,geshu-i-1):
#这里这个j呢就是控制每一次具体的冒泡过程,我们第一次冒泡需要冒几次,也就是说需要比较几次,
#假如有三个数,那只需要两次就可以了,当下一次时,最后一个
#已经是有序的了,所以说少冒泡一次,所以这里j每次都会减去i的值”
        if list_01[j] >list_01[j+1]:
            list_01[j],list_01[j + 1] = list_01[j+1],list_01[j]
print('升序:',list_01)

list_1=[2,3,1,5,0,6,-1]
for i in range(0,len(list_1)-1):
    for j in range(0,len(list_1)-i-1):
        if list_1[j]<list_1[j+1]:
            list_1[j],list_1[j+1]=list_1[j+1],list_1[j]
print('降序',list_1)

栈的应用 中缀转化为后缀 二叉树 冒泡排序 二分查找栈的应用 中缀转化为后缀 二叉树 冒泡排序 二分查找
#二分查找:前提是有序的
#二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。
#但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
#要求:1.必须采用顺序存储结构。
#2.必须按关键字大小有序排列
#二分查找:前提是有序的
#要先排序
加粗样式
list_1=[1,10,3,4,9,8,5,2,6,7]
list_1.sort()
first=0
last=len(list_1)-1
num=int(input(‘输入:’))
while first<=last:
mid = (first + last) // 2
if num==list_1[mid]:
print(‘找到了’)
break
elif num>list_1[mid]:
first=mid+1
elif num<list_1[mid]:
last=mid-1
else:
print(‘没找到’)