a = binaryTree()
a.insert(3)
a.insert(2)
currentNode = a.root
a.inOrderTraversal()
currentNode = currentNode.left
currentNode.data = 9
# currentNode = None
# currentNode.left = None
a.inOrderTraversal()
您可以在上面的代码中看到,当我放置currentNode.data = 9并检查inOrderTraversal树的结果时,它显示了按预期工作的结果 9、3,但是当我注释掉currentNode.data = 9并分配时currentData = None,它会显示之前分配的 2、3。为什么 currentNode 没有变成 None ?
完整代码:
class node:
def __init__(this,data=None):
this.left = None
this.right = None
this.data = data
class binaryTree:
def __init__(this):
this.root = None
def insert(this,data):
newNode = node(data)
if(this.root == None):
this.root = newNode
else:
currentNode = this.root
while(True):
if(data > currentNode.data):
if(currentNode.right == None):
currentNode.right = newNode
break
else:
currentNode = currentNode.right
else:
if(currentNode.left == None):
currentNode.left = newNode
break
else:
currentNode = currentNode.left
def inOrderTraversal(this):
currentNode = this.root
if(currentNode == None):
return "Tree is empty"
stack = []
stack.append(currentNode)
currentNode = currentNode.left
while(True):
if(currentNode == None and (len(stack) < 1)):
break
elif(currentNode == None and (len(stack) > 0)):
node = stack.pop()
print(node.data)
currentNode = node.right
else:
stack.append(currentNode)
currentNode = currentNode.left
a = binaryTree()
a.insert(3)
a.insert(2)
currentNode = a.root
# a.inOrderTraversal()
currentNode = currentNode.left
# currentNode.data = 9
currentNode = None
# currentNode.left = None
a.inOrderTraversal()
# print("check")