题解 | #二叉树的下一个结点#

二叉树的下一个结点

https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e

/*class TreeLinkNode {
 *     val: number
 *     left: TreeLinkNode | null
 *     right: TreeLinkNode | null
 *     next: TreeLinkNode | null
 *     constructor(val?: number, left?: TreeLinkNode | null, right?: TreeLinkNode | null, next?: TreeLinkNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.left = (left===undefined ? null : left)
 *         this.right = (right===undefined ? null : right)
 *         this.next = (next===undefined ? null : right)
 *     }
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pNode TreeLinkNode类 
 * @return TreeLinkNode类
 */
let zIndex = []
export function GetNext(pNode: TreeLinkNode): TreeLinkNode {
    // write code here
    /** 1.首先获得根节点
    2.中序遍历
    3.存储中序遍历的结果
    4.找到中序遍历的根节点的位置,下一位就是要找到的节点
*/
        //1.获取这个节点
        let newNode = pNode
        while(newNode.next !== null){
            newNode = newNode.next
        }
        //2.中序遍历
        Inorder(newNode)
        //4.找到根节点的位置,下一位就是要找到的节点
        let index = zIndex.indexOf(pNode)
        return zIndex[index +  1]
    
}
 function Inorder(node){
        //获得左子树的节点
        if(node !== null){
            Inorder(node.left)
            zIndex.push(node)
            Inorder(node.right)
        }

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务