数据结构数目49:求二叉树某结点所在的层次
2020-05-12 本文已影响0人
玲儿珑
题目:求某结点item所在的层次
解题思路:这里,用item表示待求结点的数据信息,并假设二叉树中存在这样的结点,并且不多于一个。求结点在二叉树中所处层次的问题比较合适的方法是利用二叉树的后序遍历算法,特别是非递归算法。遍历过程中访问到一个结点就判断该结点是否为满足条件的结点,若是满足条件的结点,则此时堆栈中保留的元素个数加1即为该结点的层次数。
具体算法如下:
这里使用到建立二叉树buildBT()
function layerBT(T, item) {
let stack1=new Array(MaxSize), p=T, stack2=new Array(MaxSize), flag, top=-1
do {
while ( p!=null ) {
stack1[++top] = p
stack2[top] = 0
p = p.lchild
}
p = stack1[top]
flag = stack2[top--]
if ( flag==0 ) {
stack1[++top] = p
stack2[top] = 1
p = p.rchild
}else{
if ( p.data==item ) {
return top+2
}
p = null
}
} while ( !(p==null&&top==-1) );
}
var str = "ABC DE F G "
var ch = ''
var len = str.length, i=0
var T1 = buildBT()
layerBT(T1, 'E')