2021-10-26 算法二叉树遍历

给定一个先序遍历与中序遍历的二叉树,要求求出该二叉树的后序遍历表示形式。对于如下二叉树:

 

其先序遍历为:GDAFEMHZ

其中序遍历为:ADEFGHMZ

当给定先序遍历与中序遍历时,该二叉树就被唯一的确定下来,这时即可求出二叉树的后序表示为:AEFDHZMG。

给定输入中,二叉树中的字符有且仅有一个,且二叉树中的所有节点互不相同

输入:

两行,第一行为二叉树的先序遍历表示,第二行为二叉树的中序遍历表示

输出:

一行,二叉树的后续遍历表示

function binaryTree( preStr ,  midStr ) {
   let str = '';
    // write code here
    const preArr = preStr.split('');
    const midArr = midStr.split('');
    const length = preStr.length;

    const hopage = (preArr, midArr, length) => {
      if (length == 0) return;
      if (length == 1) {
        str += preArr[0];
        return
      }
      let gen = preArr[0];
      let long = 0;
      for (let i = 0; i < midArr.length; i++) {
        if (midArr[i] != gen) long++;
        else break;
      }
      hopage(preArr.slice(1, long + 1), midArr.slice(0, long), long);
      hopage(preArr.slice(long + 1), midArr.slice(long + 1), length - long - 1);
      str += gen;
    };
    hopage(preArr, midArr, length);
    return str
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值