这里用python 实现了二叉树
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Tree:
def __init__(self):
self.root=None
def addNode(self,num):
node=TreeNode(num)
if self.root == None:
self.root=node
else:
node_list=[self.root]
while True:
node_root=node_list.pop(0)
if node_root.left is None:
node_root.left=node
return
elif node_root.right is None:
node_root.right=node
return
else:
node_list.append(node_root.left)
node_list.append(node_root.right)
def preorder(self, node): # 先序遍历
if node is None:
return []
result = [node.val]
left_item = self.preorder(node.left)
right_item = self.preorder(node.right)
return result + left_item + right_item
def midorder(self,node):#中序遍历
if node is None:
return []
left_result = self.midorder(node.left)
result=[node.val]
right_result=self.midorder(node.right)
return left_result+result+right_result
def lastorder(self,node):
if node is None:
return []
left_result = self.lastorder(node.left)
right_result = self.lastorder(node.right)
result = [node.val]
return left_result + right_result+result
#两个二叉树是否相等
class Solution:
def isSameTree(self, p, q):
if p is None and q is None:
return True
elif p is None and q is not None or p is not None and q is None:
return False
elif p.val==q.val:
left_result=self.isSameTree(p.left,q.left)
right_result=self.isSameTree(p.right,q.right)
if left_result and right_result:
return True
else:
return False
else:
return False
tree=Tree()
tree.addNode(0)
tree2=Tree()
tree2.addNode(1)
result=Solution()
print(result.isSameTree(tree.root,tree2.root))