判斷一顆二叉樹是否為搜尋二叉樹和完全二叉樹

2021-09-24 22:29:15 字數 1170 閱讀 7313

搜尋二叉樹:二叉樹的中序遍歷,在遍歷的過程中,節點值都是遞增的

class node(object):

def __init__(self,value):

self.value = value

self.right = none

self.left = none

def isbst(head):

if head == none:

return true

stack =

pre = float("-inf")

while head!=none or len(stack)!=0:

if head!=none:

head = head.left

else:

head = stack.pop()

print(head.value)

if head.value > pre:

pre = head.value

head = head.right

else:

return false

return true

判斷是否是完全二叉樹

思想:1、按層遍歷二叉樹,從每層的左邊向右一次遍歷所有節點

2、如果當前節點有右孩子節點,但是沒有左孩子節點,直接返回false

3、如果當前節點並不是所有左右孩子都有,那麼之後的所有節點必須都是葉子節點,否則返回false

4、遍歷過程中如果不返回false,則遍歷結束後返回true

def iscbt(node):

if node == none:

return true

queue =

isleaf = false

while queue:

root = queue.pop(0)

l = root.left

r = root.right

if (l==none and r!=none) or ((l!=none or r!=none) and isleaf):

return false

if l!=none:

if r!=none:

else:

isleaf = true

return true

判斷一顆二叉樹是否為對稱二叉樹

本題源自劍指offer 可以自定以一種對稱前序遍歷,即先遍歷父節點,再訪問右子節點,在訪問左子節點,null節點也訪問,將得到的序列和前序遍歷比較,相同就說明二叉樹是對稱的。遞迴 bool issymmetrical treenode proot bool issymmetricalcore tre...

判斷一顆二叉樹是否為平衡二叉樹

一.判斷一顆二叉樹是否為平衡二叉樹 題目 輸入一顆二叉樹的根節點,判斷該二叉樹是否為平衡二叉樹。所謂的平衡二叉樹是指以當前結點為根結點的樹,左右子樹的深度不得超過1。例如 解決思路一 按照前序遍歷的路線判斷。實現 二叉樹的高度 比較左右子樹那個高,高的加1既為二叉樹的高度 int binarytre...

判斷一顆二叉樹是否是平衡二叉樹

方法一,參考 template typename t intdepthtree bstreenode pbs template typename t bool isbalancetree bstreenode pbs intdepthleft depthtree pbs left intdepthr...