問題描述
給定乙個二叉樹,返回其最深的結點及結點深度。最深的結點是指距離根節點最遠的結點。
測試樣例
# input:
a/ \
b c
/ d\ e
# output:
(e,4
)# 距離根節點最遠的結點是e,結點深度為4.
**思路
參考**
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
class
node
:def
__init__
(self, value)
: self.value = value
self.left =
none
self.right =
none
def__repr__
(self)
:return self.value
class
solution
:# o(n) time, o(logn) space
defdeepest
(self, node)
:if node and node.left is
none
and node.right is
none
:return
(node,1)
if node.left is
none
:return self.increasedepth(self.deepest(node.right)
)elif node.right is
none
:return self.increasedepth(self.deepest(node.left)
)return self.increasedepth(
max(self.deepest(node.left)
, self.deepest(node.right)
, key =
lambda x: x[1]
))defincreasedepth
(self, nodedepthtuple)
: node, depth = nodedepthtuple
return
(node, depth +1)
# test program
root = node(
'a')
root.left = node(
'b')
root.right = node(
'c')
root.left.left = node(
'd')
root.left.left.right = node(
'e')
# a
# / \
# b c
# /
# d# \
# e
result = solution(
).deepest(root)
print
(result)
# (e, 4)
二叉樹結點, 排序
二叉樹結點,排序 1.二叉搜尋樹結點最小距離 給定乙個二叉搜尋樹的根結點 root,返回樹中任意兩節點的差的最小值 對這個序列相鄰相減,取最小值即可。實現時,可以優化掉這個序列。在遍歷時記錄上乙個訪問的節點值,和當前節點相減,記錄下最小值即可 定義樹節點 public class treenode ...
二叉樹刪除結點
二叉樹完成刪除結點的操作.規定 1 如果刪除的節點是葉子節點,則刪除該節點 2 如果刪除的節點是非葉子節點,則刪除該子樹 思路首先先處理 考慮如果樹是空樹root,如果只有乙個root結點,則等價將二叉樹置空 然後進行下面步驟 1.因為我們的二叉樹是單向的,所以我們是判斷當前結點的子結點是否需要刪除...
DS二叉樹 二叉樹之父子結點
題目描述 給定一顆二叉樹的邏輯結構如下圖,先序遍歷的結果,空樹用字元 0 表示,例如ab0c00d00 建立該二叉樹的二叉鏈式儲存結構。編寫程式輸出該樹的所有葉子結點和它們的父親結點 輸入 第一行輸入乙個整數t,表示有t個二叉樹 第二行起,按照題目表示的輸入方法,輸入每個二叉樹的先序遍歷,連續輸入t...