概述
- 先看如下的二叉树,中序遍历结果为:[8,3,10,1,14,6]
- 线索二叉树 思路:
- 梳理过程:
Python实现:线索化存储二叉树
class TreeNode(object):
def __init__(self, val=-1):
self.val = val
self.left = None
self.right = None
# 新增类型指针
# 规定:
# 如果left_type==0 表示指向的是左子树,如果是1 则表示指向前驱结点
# 如果right_type==0 表示指向的是右子树,如果是1 怎表示指向后继结点
self.left_type = 0 # 注意这里必须写0,不能写空值
self.right_type = 0
class ThreadedBinaryTree(object):
def __init__(self):
self.root = None
# 在递归进行线索化,总是保留前一个结点
self.pre = None # 为实现线索化,需要创建给指向当前结点的前驱结点指针
# 添加结点测试
def add(self, val):
node = TreeNode(val)
if self.root is None:
self.root = node
return
queue = [self.root]
while queue:
temp_node = queue.pop(0)
if temp_node.left is None:
temp_node.left = node
return
else:
queue.append(temp_node.left)
if temp_node.right is None:
temp_node.right = node
return
else:
queue.append(temp_node.right)
# 中序遍历测试
def