데이터 구조-트 리-학습 노트
Problem Solving with Algorithms and Data Structures
나무.
Examples of Trees
컴퓨터 과학 에는 많은 응용 이 있다.
운영 체제,데이터베이스,컴퓨터 네트워크
파일 시스템
홈 페이지
Vocabulary and Definitions
원소:
root,branches,leaves
특성:
hierarchical
각 노드 에 질문 을 하고 적당 한 답 의 경 로 를 선택 하여 계속 아래로 내 려 갑 니 다.
임의의 키 나 무 를 움 직 일 수 있 으 며,저층 의 구조 에 영향 을 주지 않 는 다.
한 노드 의 children 과 다른 노드 의 children 은 독립 적 이다.
따라서 하위 노드 를 바 꿀 때 다른 하위 노드 에 영향 을 주지 않 습 니 다.
모든 잎 노드 는 유일한 것 이다.
따라서 뿌리 에서 잎 노드 까지 유일한 경로 가 있다.
개념:
node: name->key, additional information->payload
edge: 노드 간 의 관계,한 노드 에 하나의 incoming edge 만 있 고 여러 개의 outgoing edge 가 있 습 니 다.
root:트 리 에 유일 하 게 incoming edge 가 없 는 노드
path,
children,parent,sibling,subtree
leaf node:children 없 는 node
level:루트 에서 노드 까지 path 의 edge 갯 수
이 나무 에서 가장 큰 level
biary tree:나무의 모든 노드 는 최대 두 명의 children 만 있 습 니 다.
정의:
Definition One: A tree consists of a set of nodes and a set of edges that connect pairs of nodes.
Definition Two: A tree is either empty or consists of a root and zero or more subtrees, each of which is also a tree. The root of each subtree is connected to the root of the parent tree by an edge.
List of Lists Representation
a tree represented by a list of lists
creating a simple tree using a list
myTree = ['a',['b',['d',[],[]],['e',[],[]]],['c',['f',[],[]],[]]]
print(myTree)
print('left subtree =',myTree[1])
print(myTree[1][1])
print(myTree[1][1][1])
각 list 의 첫 번 째 요 소 는 root 이 고 두 번 째 요 소 는 left subtree 이 며 세 번 째 요 소 는 right subtree 입 니 다.
잎 노드 에 루트 하나 와 빈 list 두 개가 있 습 니 다.
def BinaryTree(r):
return [r, [], []]
#to insert a left child
def insertLeft(root,newBranch):
t = root.pop(1) #1st level left subtree
if len(t) > 1: #if null, len is 0
root.insert(1,[newBranch,t,[]]) #insert newBranch in left position
else:
root.insert(1,[newBranch, [], []])
return root
r = BinaryTree(3)
print(r)
#[3, [], []]
print(len(r.pop(1)))
#0
insertLeft(r,4)
print(r)
#[3, [4, [], []]]
insertLeft(r,5)
print(r)
#[3, [5, [4, [], []], []]]
root = r
newBranch = 6
t = root.pop(1)
print(t)
#[5, [4, [], []], []]
print(len(t))
#3
root.insert(1,[newBranch,t,[]])
print(root)
#[3, [6, [5, [4, [], []], []], []]]
t = root.pop(1)
print(t)
#[6, [5, [4, [], []], []], []]
print(len(t))
#3
def BinaryTree(r):
return [r, [], []]
#to insert a left child
def insertLeft(root,newBranch):
t = root.pop(1) #1st level left subtree
if len(t) > 1: #if null, len is 0
root.insert(1,[newBranch,t,[]]) #insert newBranch in left position
else:
root.insert(1,[newBranch, [], []])
return root
r = BinaryTree(3)
insertLeft(r,4)
insertLeft(r,5)
def insertRight(root,newBranch):
t = root.pop(2)
if len(t)>1:
root.insert(2,[newBranch,[],t])
else:
root.insert(2,[newBranch,[],[]])
return root
insertRight(r,6)
print(r)
insertRight(r,7)
print(r)
def getLeftChild(root):
return root[1]
def getRightChild(root):
return root[2]
print(getLeftChild(r))
print(getRightChild(r))
print(getRightChild(getLeftChild(r)))
def getRootVal(root):
return root[0]
def setRootVal(root,newVal):
root[0] = newVal
return root[0]
print(getRootVal(r))
setRootVal(r,10)
print(getRootVal(r))
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.