Write an algorithm to find the ‘next’ node (i.e., in-order successor) of a given node in a binary search tree. You may assume that each node has a link to its parent.
public TreeNode findNext(TreeNode node) { if(node == null) return null; if(node.parent==null || node.right != null) { // find left most child in right sub tree TreeNode next = node.right; while(next.left != null) next = next.left; return next; } else { // go up until we are on the left side of parent node TreeNode p = node.parent; while(p != null && p.left != node) { node = p; p = p.parent; } return p; } }
如果没有父节点的话,可以这么做:
public TreeNode findNext(TreeNode root, TreeNode node) { if(root == null || node == null) return null; if(node.right != null) { TreeNode n = node.right; while(n.left != null) { n = n.left; } return n; } TreeNode n = null; while(root != null) { if(root.val > node.val) { n = root; root = root.left; } else if(root.val < node.val) { root = root.right; } else { break; } } return n; }
Reference:
http://www.geeksforgeeks.org/inorder-successor-in-binary-search-tree/
相关推荐
450._Delete_Node_in_a_BST【LeetCode单题讲解系列】
return self._find(node.left, key) else: return self._find(node.right, key) def delete(self, key): self.root = self._delete(self.root, key) def _delete(self, node, key): if not node: return ...
在本章节中,我们将深入探讨BST24108、BST24208、BST24201以及BST24212这几种型号的CAN总线通讯板卡的主要特点及其应用场景。 #### 二、BST24108 — PCI总线8通道CAN通讯卡 **主要特性:** - **PCI总线接口**:...
`BST.rar_c++ tree node_read-bst-1`这个文件名可能是指包含了C++实现二叉搜索树节点读取的代码,具体实现可能涉及对二进制文件的读取和解析,以便于存储和恢复树的状态。 6. **应用**: 二叉搜索树广泛应用于...
将bst文件放到MiKTeX的bst文件夹下自己新建的gbt7714-2005文件下,1)作者名称如 KERNER B S 的样式 GBT7714-2005NLang.bst 2)作者名称如 KERNER B S 的样式 GBT7714-2005NLang_UP.bst 3)作者名称如 Kerner B S 的...
综上所述,BST23X08/BST23X18系列串口通讯板卡凭借其灵活的配置选项、强大的功能以及广泛的兼容性,在工业自动化领域展现出了极高的实用价值。无论是对于初学者还是资深工程师而言,掌握这些核心知识点都是十分必要...
在Java中实现BST,我们需要定义一个Node类来表示树的节点,这个Node通常会有key、value、left和right属性,分别代表键、值、左子节点和右子节点。以下是一个简单的Java二分搜索树节点类的实现: ```java public ...
The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only nodes with keys greater than or equal to the node's key. Both the left ...
Node* BST::search(int value) { return searchRec(root, value); } Node* searchRec(Node* node, int value) { if (node == nullptr || node->data == value) return node; return value < node->data ? ...
《GBT7714-2005NLang.bst样式文件详解与应用》 在学术研究和出版领域,正确引用参考文献是至关重要的。中国国家标准GB/T 7714-2005《文后参考文献著录规则》为中文文献的引用提供了统一规范。其中,`GBT7714-2005...
**二叉搜索树(BST,Binary Search Tree)详解** 二叉搜索树是一种特殊的二叉树数据结构,它的每个节点都包含一个键值、一个指向左子节点的指针和一个指向右子节点的指针。在二叉搜索树中,对于任意节点,其左子树...
### BST纠偏调试步骤详解 #### 一、纠偏镜头界面解释 纠偏镜头界面是BST纠偏系统的重要组成部分,用于实时监控物料的运行状态,并根据实际情况调整相机参数以达到最佳检测效果。以下是对该界面各部分含义的详细...
### BST34211离散量输入/输出卡用户手册关键知识点 #### 1. 概述 BST34X11是一款专为工业控制领域设计的48路离散量输入/输出卡,支持PCI/CPCI总线标准。该设备由北京神州飞航科技有限责任公司研发并生产,具有强大...
BST纠偏系统调试手册.pdf
二叉搜索树(Binary Search Tree,BST)是一种自平衡的二叉查找树,它具有以下特性:对于树中的任意一个节点,其左子树中的所有节点的值都小于该节点的值,而右子树中所有节点的值都大于该节点的值。这种数据结构在...
二叉查找树(Binary Search Tree,BST),也称为二叉排序树,是一种特殊的二叉树数据结构,它的每个节点都包含一个键值、一个指向左子树的指针和一个指向右子树的指针。在二叉查找树中,对于任意节点,其左子树中的...
二叉搜索树(Binary Search Tree,简称BST)是一种特殊的二叉树数据结构,它具有以下特性: 1. 每个节点包含一个键(key)、一个关联的值、一个指向左子节点的引用和一个指向右子节点的引用。 2. 节点的键大于其左...
二叉搜索树(Binary Search Tree,BST)是一种特殊的二叉树结构,它的每个节点都包含一个键(key)、一个关联的值、一个指向左子树的指针和一个指向右子树的指针。在二叉搜索树中,对于任何节点,其左子树中的所有...
根据提供的信息,我们可以了解到这是一份关于bst-4wd+V4.0发行版1的文档,主要关注的是与stm32微控制器相关的硬件设计细节。由于提供的文档内容较为复杂且部分信息不易解读,以下将重点围绕标题、描述以及部分可见...
void Insert(Node* &x, Node *z) { if (x == nullptr) { x = z; } else if (z->key < x->key) { Insert(x->left, z); if (GetSize(x->left) > GetSize(x->right) + 1) { RotateRight(x); // 右旋 } } else {...