java如何创建一颗二叉树
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何创建一颗二叉树相关的知识,希望对你有一定的参考价值。
源代码如图,该怎么写才能跑起来啊... 源代码如图,该怎么写才能跑起来啊 展开
参考技术A 计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(leftsubtree)和“右子树”(right
subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。
二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的
i
-1次方个结点;深度为k的二叉树至多有2^(k)
-1个结点;对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为n0,度为2的结点数为n2,则n0
=
n2
+
1。
树是由一个或多个结点组成的有限集合,其中:
⒈必有一个特定的称为根(ROOT)的结点;
二叉树
⒉剩下的结点被分成n>=0个互不相交的集合T1、T2、......Tn,而且,
这些集合的每一个又都是树。树T1、T2、......Tn被称作根的子树(Subtree)。
树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树
1.树的度——也即是宽度,简单地说,就是结点的分支数。以组成该树各结点中最大的度作为该树的度,如上图的树,其度为2;树中度为零的结点称为叶结点或终端结点。树中度不为零的结点称为分枝结点或非终端结点。除根结点外的分枝结点统称为内部结点。
2.树的深度——组成该树各结点的最大层次。
3.森林——指若干棵互不相交的树的集合,如上图,去掉根结点A,其原来的二棵子树T1、T2、T3的集合T1,T2,T3就为森林;
4.有序树——指树中同层结点从左到右有次序排列,它们之间的次序不能互换,这样的树称为有序树,否则称为无序树。
树的表示
树的表示方法有许多,常用的方法是用括号:先将根结点放入一对圆括号中,然后把它的子树由左至右的顺序放入括号中,而对子树也采用同样的方法处理;同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。如右图可写成如下形式:
二叉树
(a(
b(d,e),
c(
f(
,g(h,i)
),
)))
Leetcode刷题Python从列表list中创建一颗二叉树
1 思路
使用递归创建二叉树,每个节点最多有两个子节点,以索引去从列表中取子节点的值,i为根节点,左子节点的值为2×i+1,右子节点的值为2×i+2。
2 python实现
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def createTree(root,rt,i):
if i <len(rt):
if not rt[i]:
return None
else:
root = TreeNode(rt[i])
root.left = createTree(root.left,rt,2*i+1)
root.right = createTree(root.right,rt,2*i+2)
return root
return root
root_list = [3,9,20,None,None,15,7]
root = TreeNode(-1)
root = createTree(root,root_list,0)
以上是关于java如何创建一颗二叉树的主要内容,如果未能解决你的问题,请参考以下文章