所謂二叉樹的左視圖,是指打印從左方向看到的二叉樹。
根據前序遍歷算法思想,在左視圖代碼中先遍歷左子樹在遍歷左子樹,這樣在判斷level == len(stack)時,先遍歷左子樹則保證層數與數組長度相等時遍歷的是每一層的第一個節點
同理,在右視圖中,在判斷level == len(stack)時,先遍歷右子樹保證層數與數組長度相等時遍歷的是每一層的最后一個節點
def view(root):
if root == None: return level = 0 stack = [] #rightview(root,stack,level) leftview(root,stack,level) print stack #二叉樹左視圖 #打印每一層的第一個節點 def leftview(root,stack,level): if root == None: return if level == len(stack): #判斷是不是每一層的第一個節點 stack.append(root.value) leftview(root.left,stack,level+1) leftview(root.right,stack,level+1) #二叉樹右視圖 #打印每一層的最后一個節點 def rightview(root,stack,level): if root == None: return if level == len(stack): #判斷是不是每一層的最后一個節點 stack.append(root.value) rightview(root.right,stack,level+1) rightview(root.left,stack,level+1)