获取树节点的数据以及树的层数
-
def getNumLeafs(myTree):
-
numLeafs=0
-
firstStr=list(myTree.keys())[0]
-
#此处注意,书上用的是py2的版本,所以有些不同,对于a.keys()的类型需要先转成列表
-
secondDict=myTree[firstStr]
-
#firstStr取出决策树的顶级父节点,然后读取顶级父节点所建立的树
-
for key in secondDict.keys():
-
if type(secondDict[key]).__name__=='dict': #判断某个键值是否是一个dict类型,即是否是一个决策节点
-
numLeafs+=getNumLeafs(secondDict[key])#递归算法,不断递归,直至找到叶子节点
-
else:
-
numLeafs+=1
-
return numLeafs
-
-
def getTreeDepth(myTree):
-
maxDepth=0
-
firstStr=list(myTree.keys())[0]
-
secondDict=myTree[firstStr]
-
for key in secondDict.keys():
-
if type(secondDict[key]).__name__=='dict':
-
#上面内容都一样
-
hisDepth=1+getTreeDepth(secondDict[key])#如果是决策节点,说明就需要至少还有一层,所以加上1,并搜寻此决策节点下是否还有决策节点
-
else:
-
thisDepth=1
-
if thisDepth>maxDepth:
-
maxDepth=thisDepth
-
return maxDepth