返回中序遍历的一个节点的下一个节点
2018-01-06 16:29
211 查看
题目:返回中序遍历的一个节点的下一个节点
思路:
1. 该节点是否有右孩子,右孩子的左孩子的最后一个就是下一个节点
2. 该节点没有右孩子。它是父节点的左子树,那么下一个节点就是 父节点。
3. 该节点没有右孩子。它是父节点的右子树,那么就要找它父节点是其一个节点的左子树。
思路:
1. 该节点是否有右孩子,右孩子的左孩子的最后一个就是下一个节点
2. 该节点没有右孩子。它是父节点的左子树,那么下一个节点就是 父节点。
3. 该节点没有右孩子。它是父节点的右子树,那么就要找它父节点是其一个节点的左子树。
class Solution { public: TreeLinkNode* GetNext(TreeLinkNode* pNode) { if(pNode == NULL){ return NULL; } TreeLinkNode *pNext = NULL; // 有 右孩子 获取右孩子的左孩纸 if(pNode->right != NULL){ TreeLinkNode *pNode_right = pNode->right; while(pNode_right->left != NULL){ pNode_right = pNode_right->left; } pNext = pNode_right; }else if(pNode->next != NULL && pNode->right == NULL ){ //无右孩子 父极 //如果是 父得左孩纸 下一个就是父元素 //如果是父元素右孩子,则要找他是父元 到 父元素的右 != current TreeLinkNode * parent = pNode->next; TreeLinkNode * current = pNode; while(parent != NULL && current == parent->right){ current = parent; parent = parent->next; } pNext = parent; } return pNext; } };
相关文章推荐
- java实现输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head
- Cracking coding interview (4.5)二叉树按中序遍历次序返回某节点下一个节点
- 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回
- 二叉树 给定一个节点,求中序遍历下一个节点
- 给定一个二叉树和其中的一个节点,求中序遍历这个节点的下一个节点
- 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 试编写一个函数,返回一颗给定二叉树在中序遍历下的最后一个节点(分别用递归和非递归实现)
- 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 21.输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 一个链表的每个节点,有一个指向next指针指向下一个节点,还有一个rand指针指向这个链表中的一个随机节点或NULL,现在要求复制一个单链表来实现这个链表,返回复制后的新链表。
- 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
- 写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。
- 黄聪:Delphi 中的 XMLDocument 类详解(17) - 上一个节点、下一个节点、父节点
- 单向链表(五) 按值查找节点,返回一个链表