自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
初始化树以及定义三种遍历函数
# 创建一个二叉树类
class BiTree():
def __init__(self, data=None, lchild=None, rchild=None):
self.data = data
self.lchild = lchild
self.rchild = rchild
# 定义一个中序遍历
def read_mid(tree):
if tree: #出口
read_mid(tree.lchild) #用左子树去展开
print(tree.data, end=' ') #读取data
read_mid(tree.rchild) #用右子树去展开
# 定义一个前序遍历
def read_pre(self):
if tree: # 出口
print(tree.data, end=' ') # 读取data
read_mid(tree.lchild) # 用左子树去展开
read_mid(tree.rchild) # 用右子树去展开
# 定义一个后序遍历
def read_late(self):
if tree: # 出口
read_mid(tree.lchild) # 用左子树去展开
read_mid(tree.rchild) # 用右子树去展开
print(tree.data, end=' ') # 读取data
def size(tree,count):
if tree:
count[0] += 1# 出口
size(tree.lchild, count) # 用左子树去展开
size(tree.rchild, count) # 用右子树去展开
return count
def tree_high(tree,high):
if tree:
high[0] += 1 # 出口
size(tree.lchild, high) # 用左子树去展开
return high
主函数内容 :
if __name__ == '__main__':
"""
根据树的构造,一个节点一个节点填充:
用两个指针,一个定在根节点P0,另一个做移动指针P1
注意:要先建树再连接
"""
tree = BiTree(1)
P0 = tree # 根节点A
P1 = P0 # 初始移动指针
P1.lchild = BiTree(2) # 下面依次是B,C,D,E赋值
P1 = P1.lchild
P1.lchild = BiTree(4)
P1 = P1.lchild
P1.lchild = BiTree(8)
P1.rchild = BiTree(9)
# 左子树填充完,填充右子树
P1 = P0 # 把移动指针移回到根节点,再重复上面动作
P1.rchild= BiTree(3)
P1 = P1.rchild
P1.lchild = BiTree(6)
#在通过上面的前、中、后序方法进行遍历
print("打印前序遍历:",end = ' ')
read_pre(tree)
print("\n打印中序遍历:",end = ' ')
read_mid(tree)
print("\n打印后序遍历:",end = ' ')
read_late(tree)
print(f"\n节点数是:{size(tree, [0])[0]}")
print(f"高度是:{tree_high(tree, [0])[0]-2}")
2.进阶版本
用队列和循环,将建树的过程封装起来,传入节点对应数字即可生成二叉树
import math
#定义一个队列
class Queue():
def __init__(self,Maxsize):
self.head = 0
self.rear = 0
self.data = [None for i in range(Maxsize)]
self.Maxsize = Maxsize
def empty(self):
if self.head == self.rear:
return True
else :
return False
def length(self):
return self.rear - self.head
def inQue(self,num):
# 采用循环队列形式入队
if (self.rear+1)%self.Maxsize!= self.head:
self.rear = (self.rear+1)%self.Maxsize
self.data[self.rear] = num
else:
raise("Queue already full")
def outQue(self):
node = self.data[(self.head+1)%self.Maxsize]
self.head+=1
return node
# 创建一个二叉树
class BiTree():
def __init__(self, data=None, lchild=None, rchild=None):
self.data = data
self.lchild = lchild
self.rchild = rchild
# 定义一个中序遍历
def read_mid(tree):
if tree: # 出口
read_mid(tree.lchild) # 用左子树去展开
print(tree.data, end=' ') # 读取data
read_mid(tree.rchild) # 用右子树去展开
# 定义一个前序遍历
id(tree):
if tree: # 出口
read_mid(tree.lchild) # 用左子树去展开
print(tree.data, end=' ') # 读取data
read_mid(tree.rchild) # 用右子树去展开
# 定义一个前序遍历