Day1-part1
Linked data structure, Singly Linked Lists 单链表
链表基础
链表是一种数据结构,可以认为包含两个部分,一个部分是value,就是含有的值。另一个部分是next,指向下一个节点。
class Listnode:
def __init__(self,val,head=None):
self.val=val
self.next=head
我们先创建一个链表节点,它包含value和next。
链表操作实现
我们先实现PPT中想要求你会的操作:insert(在链表头插入一个值),append(在链表末尾插入一个值),___str __(类内置方法,可以使print能够实现)。
insert实现
class mylinkerlist:
def __init__(self):
self.dummyhead=Listnode(0)
def insert(self,val):
node=Listnode(val)
node.next=self.dummyhead.next
self.dummyhead.next=node
append实现
class mylinkerlist:
def __init__(self):
self.dummyhead=Listnode(0)
def insert(self,val):
node=Listnode(val)
node.next=self.dummyhead.next
self.dummyhead.next=node
def append(self,val):
cur=self.dummyhead
while(cur.next!=None):
cur=cur.next
cur.next=Listnode(val)
___str___实现
class mylinkerlist:
def __init__(self):
self.dummyhead=Listnode(0)
def insert(self,val):
node=Listnode(val)
node.next=self.dummyhead.next
self.dummyhead.next=node
def append(self,val):
cur=self.dummyhead
while(cur.next!=None):
cur=cur.next
cur.next=Listnode(val)
def __str__(self):
cur=self.dummyhead.next
if cur == None:
return ''
else:
ret=str(cur.val)
while(cur.next!=None):
cur=cur.next
ret+=''+str(cur.val)
return ret
其实都是一个类似的东西,借助链表的基本操作完成实现的!相信你可以看明白的宝贝!
我第一次给你讲的内容有点偏深刻了,当时咱们还想的是删除第index位置的链表节点。
但是ppt没讲这么难,咱们任务导向一下!就会这三个就好了
Day1-part2
The Binary Search Tree 二叉搜索树
二叉树基础
二叉树这种数据结构,是一种类似树的结构。核心是每一个树结点,每个结点都有自己的value,同时还有自己的left和right结点。
什么是二叉搜索树呢,就是说一定要满足 left < middle < right !
class tree:
class treenode:
def __init__(self,val=0,left=None,right=None):
self.val=val
self.left=left
self.right=right
def __init__(self):
self.root=None
创建 tree 这个类, tree中的关键是treenode这个树节点,包含value,left和right。
二叉树操作实现
我们先实现PPT中想要求你会的操作:insert(二叉树中插入一个节点),sum(求取二叉树节点的总合),___str __(类内置方法,可以使print能够实现)。
insert实现
class tree:
class treenode:
def __init__(self,val=0,left=None,right=None):
self.val=val
self.left=left
self.right=right
def __init__(self):
self.root=None
def insert(self,val):
if self.root==None:
self.root=tree.treenode(val=val)
else:
self.insert_help(self.root,val)
def insert_help(cur,val):
if val<cur.left.val:
if cur.left==None:
cur.left=tree.treenode(val=val)
else:
insert_help(cur.left,val)
elif val>cur.right.val:
if cur.right==None:
cur.right=tree.treenode(val=val)
else:
insert_help(cur.right,val)
__str__实现
class tree:
class treenode:
def __init__(self,val=0,left=None,right=None):
self.val=val
self.left=left
self.right=right
def __init__(self):
self.root=None
def insert(self,val):
if self.root==None:
self.root=tree.treenode(val=val)
else:
self.insert_help(self.root,val)
def insert_help(self,cur,val):
if val<cur.left:
if cur.left==None:
cur.left=tree.treenode(val=val)
else:
self.insert_help(cur.left,val)
elif val>cur.right:
if cur.right==None:
cur.right=tree.treenode(val=val)
else:
self.insert_help(cur.right,val)
def __str__(self):
self.str_help(self.root)
def str_help(self,cur):
if cur==None:
return ''
else:
ret=str(cur.val)
left_str=self.str_help(cur.left)
right_str=self.str_help(cur.right)
if left_str:
ret=left_str+''+ret
if right_str:
ret=ret+''+right_str
return ret
sum实现
class tree:
class treenode:
def __init__(self,val=0,left=None,right=None):
self.val=val
self.left=left
self.right=right
def __init__(self):
self.root=None
def insert(self,val):
if self.root==None:
self.root=tree.treenode(val=val)
else:
self.insert_help(self.root,val)
def insert_help(self,cur,val):
if val<cur.left:
if cur.left==None:
cur.left=tree.treenode(val=val)
else:
self.insert_help(cur.left,val)
elif val>cur.right:
if cur.right==None:
cur.right=tree.treenode(val=val)
else:
self.insert_help(cur.right,val)
def __str__(self):
self.str_help(self.root)
def str_help(self,cur):
if cur==None:
return ''
else:
ret=str(cur.val)
left_str=self.str_help(cur.left)
right_str=self.str_help(cur.right)
if left_str:
ret=left_str+''+ret
if right_str:
ret=ret+''+right_str
return ret
def sum(self):
return sum_help(self.root)
def sum_help(self,cur):
if cur==None:
return 0
else:
ret=cur.val
left=self.sum_help(cur.left)
right=self.sum_help(cur.right)
reurn ret+left+right
bt=tree()
bt.insert(12)
bt.insert(7)
bt.insert(13)
bt.insert(-5)
print(bt)
print(bt.sum())
一起好好看一下吧,这个拿下了就完事了!
加油,我相信你可以的