题解 | #二叉树的下一个结点#
二叉树的下一个结点
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)
}
}

