已知二叉樹節(jié)點(diǎn)求該中序遍歷的下一個(gè)節(jié)點(diǎn)

定義二叉樹數(shù)據(jù)結(jié)構(gòu)如下,其中next 指向父節(jié)點(diǎn)。傳入某個(gè)節(jié)點(diǎn)A,計(jì)算A節(jié)點(diǎn)中序遍歷結(jié)果對(duì)應(yīng)的下一個(gè)節(jié)點(diǎn)

const Node = {
  next: null,
  left: null,
  right: null,
  val: ''
}

思路

1.根據(jù)該節(jié)點(diǎn)遞歸查找根節(jié)點(diǎn)
2.根據(jù)根節(jié)點(diǎn)生成中序遍歷結(jié)構(gòu)的list
3.根據(jù)節(jié)點(diǎn)值獲取list中下一節(jié)點(diǎn)值

function findRoot( node ){
    if( !node.next ) return node;
    return findRoot( node.next )
}

function traversal( root, res = [] ) {
    if( !root ) return null;
    treval( root.left, res )
    res.push( root )
    treval( root.right, res )
    return res
}

function getNext( pNode )
{
    if( !pNode ) return null
    const root = findRoot( pNode );
    const mid = traversal( root );
    
    for( let i = 0;i < mid.length;i ++ ) {
        if( mid[ i ].val === pNode.val ) {
            return i < mid.length - 1 ? mid[ i + 1 ] : null
        }
    }
    return null
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容