二叉樹的最深結點

2021-10-09 18:47:23 字數 1893 閱讀 4335

問題描述

給定乙個二叉樹,返回其最深的結點及結點深度。最深的結點是指距離根節點最遠的結點。

測試樣例

# 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...