给定一个先序遍历与中序遍历的二叉树,要求求出该二叉树的后序遍历表示形式。对于如下二叉树:
其先序遍历为: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
}