【发布时间】:2018-09-29 01:57:37
【问题描述】:
我一直在研究二叉树和二叉源树。遇到树(BT)的这个非常基本的问题,并挑战要证明的二叉树的属性。
问题:给定一个节点(根),检查这是否是一个有效的二叉树。不要求验证给定的 BT 是否是 BST,而只是要求检查以下是否是 BT。
Valid:
X1
/ \
X4 X5
\ \
X3 X7
Invalid:
X1
/ \
X4 X5
\ / \
X3 X7
# A Python class that represents an individual node in a BT
class Node:
def __init__(self, key):
self.left = None
self.right = None
self.val = key
def isNotBinaryTree(root):
# code here
if isNotBinaryTree(root):
print "True"
else:
print "False"
我知道这不是一棵二叉树(事实上,根据它的定义和属性,这甚至不是一棵树)。 问题是......我如何证明或验证这一点?或者我如何验证这不是一个 BT,其中 x4 和 x5 -> x3(多个父(节点)指向同一个子节点?***没有提供数据!如果我要解决,算法/逻辑会是什么样子这个?(首选Python xx)
【问题讨论】:
-
做一个dfs并检查它是否包含一个循环。
-
@DhruvSehgal 我猜“dfs”在这里指的是“深度优先策略”?而当你说“包含一个循环”时,检查一下这些节点(X4,X3,X1,X5)是否形成一个循环?
-
是的,这正是我要说的
-
这是我最初的想法……谢谢!
标签: tree binary-tree binary-search-tree binary-search b-tree