題目:
對于一棵二叉樹,請設(shè)計一個算法,創(chuàng)建含有某一深度上所有結(jié)點的鏈表。
給定二叉樹的根結(jié)點指針TreeNode* root,以及鏈表上結(jié)點的深度,請返回一個鏈表ListNode,代表該深度上所有結(jié)點的值,請按樹上從左往右的順序鏈接,保證深度不超過樹的高度,樹上結(jié)點的值為非負(fù)整數(shù)且不超過100000。
思路:
每次往下一層,dep-1
# -*- coding:utf-8 -*-
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class TreeLevel:
l = ListNode(-1)
p = l
def getTreeLevel(self, root, dep):
# write code here
if not root or dep == 0:
return
if dep == 1:
self.p.next = ListNode(root.val)
self.p = self.p.next
else:
self.getTreeLevel(root.left,dep-1)
self.getTreeLevel(root.right,dep-1)
return self.l.next
if __name__ == '__main__':
head = TreeNode(1)
head.left = TreeNode(2)
head.right = TreeNode(3)
head.left.left = TreeNode(4)
head.left.right = TreeNode(5)
head.left.left.left = TreeNode(6)
head.left.left.right = TreeNode(7)
s = TreeLevel()
s.getTreeLevel(head,2)
print(s.l.next.val)