0
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")
4

0 回答 0