JavaScript 및 Python에서 이진 트리 반전
19429 단어 binarypythonjavascripttutorial
아래 이미지는 프로세스를 간략하게 보여줍니다.
.
따라야 할 단계:-
3 오른쪽 속성을 저장된 왼쪽 속성으로 설정
그런 다음 노드의 오른쪽 속성에 있습니다.
JavaScript의 코드 구현:-
class Node{
constructor(val){
this.val = val;
this.left = null;
this.right = null;
}
}
class BST{
constructor(){
this.root = null;
}
insert(val){
let newNode = new Node(val);
if(!this.root){
this.root = newNode;
}else{
let current = this.root;
while(true){
if(val < current.val){
if(current.left === null){
current.left = newNode;
return this
}else{
current = current.left;
}
}else{
if(current.right === null){
current.right = newNode;
return this
}else{
current = current.right
}
}
}
}
}
DFSInOrder(){
let data=[];
function traverse(node){
if(node.left) traverse(node.left);
data.push(node.val);
if(node.right) traverse(node.right);
}
traverse(this.root);
return data;
}
IBT(){
function Invert(node){
if(node === null) return ;
let temp = node.left;
node.left = node.right;
node.right = temp;
Invert(node.left);
Invert(node.right);
}
Invert(this.root)
return this.DFSInOrder()
}
}
let tree = new BST();
tree.insert(100);
tree.insert(200);
tree.insert(150);
tree.insert(80);
tree.insert(90);
tree.insert(50);
tree.insert(30);
tree.insert(20);
tree.insert(180);
tree.insert(190);
tree.DFSInOrder();
tree.IBT();
파이썬에서:-
class Node:
def __init__(self,val):
self.val = val
self.left = None
self.right = None
class BST:
def __init__(self):
self.root= None
def insert(self, val):
newNode = Node(val)
if self.root == None:
self.root= newNode
else:
current = self.root
while True:
if val< current.val:
if current.left == None:
current.left = newNode
return self
else:
current= current.left
else:
if(current.right == None):
current.right = newNode
return self
else:
current = current.right
def dfsInorder(self):
data =[]
def traverse(node):
if(node.left): traverse(node.left)
data.append(node.val)
if(node.right): traverse(node.right)
traverse(self.root)
return data
def IBT(self):
def InvertTree(node):
if node == None: return
temp= node.left
node.left = node.right
node.right = temp
InvertTree(node.left)
InvertTree(node.right)
InvertTree(self.root)
return self.dfsInorder()
bst = BST()
bst.insert(100)
bst.insert(200)
bst.insert(150)
bst.insert(175)
bst.insert(160)
bst.insert(180)
bst.insert(75)
bst.insert(50)
bst.insert(65)
bst.insert(40)
bst.insert(55)
bst.insert(20)
print(bst.dfsInorder())
print(bst.IBT())
좋은 주말 되세요.
Reference
이 문제에 관하여(JavaScript 및 Python에서 이진 트리 반전), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/edwardcashmere/inverting-a-binary-tree-in-javascript-and-python-ncp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)