python資料結構之二叉樹
阿新 • • 發佈:2018-12-09
這裡用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))