Python循环嵌套列表法实现二叉树

以实现下图为例:
在这里插入图片描述
代码实现:

#BinaryTree--创建仅有根节点的二叉树
def BinaryTree(r):
    return [r,[],[]]

#insertLeft--将新节点插入树中作为其直接左节点
def insertLeft(r,tree):
    t=tree.pop(1)
    if len(t)>=1:
        #证明t中保留的不是叶节点,而是一个树
        tree.insert(1,[r,t,[]])
    else:
        tree.insert(1,[r,[],[]])
    return tree
        
#insertRigth--将新节点插入树中作为其直接右节点
def insertRigth(r,tree):
    t=tree.pop(2)
    if len(t)>=1:
        #证明t中保留的不是叶节点,而是一个树
        tree.insert(2,[r,[],t])
    else:
        tree.insert(2,[r,[],[]])
    return tree

#get--取得根节点
def get(tree):
    return tree[0]

#setRootVal--设置新的根节点
def setRootVal(tree,newval):
    tree[0]=newval
     
#getLeft--返回左子树
def getLeft(tree):
    return tree[1]
    
#getRight--返回右子树
def getRight(tree):
    return tree[2]

# 先创建一个根节点
tree=BinaryTree(1)

# 把左右两条线设置好
insertLeft(4,tree)
insertLeft(2,tree)
insertRigth(8,tree)
insertRigth(6,tree)
insertRigth(3,tree)

# 当左线上节点出现右子树的时候,先一层一层的提出树结构来
l=getLeft(tree)

# 再向子树中插入新的右节点
insertRigth(5,l)

#右线上出现左子树的时候同上述
rr=getRight(tree)
rrr=getRight(rr)

#此时rrr是一个以6为根的子树,插入左节点,完成
insertLeft(7,rrr)

print(tree)

结果:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以回答这个问题。二叉树是一种常见的数据结构,可以用 Python 实现。以下是一个简单的二叉树实现示例: ```python class TreeNode: def __init__(self, val): self.val = val self.left = None self.right = None class BinaryTree: def __init__(self): self.root = None def insert(self, val): if not self.root: self.root = TreeNode(val) else: self._insert(val, self.root) def _insert(self, val, node): if val < node.val: if node.left: self._insert(val, node.left) else: node.left = TreeNode(val) else: if node.right: self._insert(val, node.right) else: node.right = TreeNode(val) def search(self, val): return self._search(val, self.root) def _search(self, val, node): if not node: return False elif node.val == val: return True elif val < node.val: return self._search(val, node.left) else: return self._search(val, node.right) def inorder_traversal(self): res = [] self._inorder_traversal(self.root, res) return res def _inorder_traversal(self, node, res): if node: self._inorder_traversal(node.left, res) res.append(node.val) self._inorder_traversal(node.right, res) def preorder_traversal(self): res = [] self._preorder_traversal(self.root, res) return res def _preorder_traversal(self, node, res): if node: res.append(node.val) self._preorder_traversal(node.left, res) self._preorder_traversal(node.right, res) def postorder_traversal(self): res = [] self._postorder_traversal(self.root, res) return res def _postorder_traversal(self, node, res): if node: self._postorder_traversal(node.left, res) self._postorder_traversal(node.right, res) res.append(node.val) ``` 这个二叉树实现包括插入、搜索、中序遍历、前序遍历和后序遍历等常见操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值