import sys
class Node(object):
def __init__(self,val=None):
self.val = val
self.left = None
self.right = None
#非递归版本
#中序遍历把打印的时机换成比较
def isBST(head):
if not head:
return True
stack = []
pre = -sys.maxsize
while stack or head != None:
if head != None:
stack.append(head)
head = head.left
else:
head = stack.pop()
print(head.val, end=' ')
if head.val>pre:
pre = head.val
head = head.right
else:
return False
return True
本文介绍了一种使用非递归方式实现的中序遍历算法,用于判断给定的二叉树是否为二叉搜索树(BST)。通过维护一个栈和前驱节点,该算法能够在不使用递归的情况下高效地完成遍历,并实时检查树的性质,确保所有左子树的节点值小于其根节点,所有右子树的节点值大于其根节点。
1147

被折叠的 条评论
为什么被折叠?



