[英]After a General Tree is converted to a Binary Tree, how is it possible to find the parent given a node “v” of the General Tree using the Binary Tree?
[英]Java - finding a parent of a node in a Binary Tree? (converted from a general tree)
我有一棵从普通树转换而来的二叉树。 意思是,任何给定节点的左节点是该节点的子节点,而任何给定节点的右节点是该节点的兄弟节点。
我的问题是-我如何编写一个将采用节点并找到其父节点的方法? (通过遍历整个树,我猜)
谢谢!
让我看看我是否正确理解了
这取决于您对树的实现。 通常,树没有任何循环,并且每个节点都有对子代的引用。 但是同样,这就是树的实现方式。
如果要查找叶子,则可以继续递归到该节点的子节点,直到到达子节点等于null的基本情况为止。
findLeaves (Node n) {
if (n == null)
return;
else if (n.left == null AND n.right == null)
return n; // A child
else
findLeaves(n.left);
findLeaves(n.right);
}
与root相同。 如果节点引用了父节点,我们正在寻找根节点。 继续递归给父母,直到父母为空,这意味着该节点是父母。
findRoot (Node n) {
if (n == null)
return;
else if (n.parent == null)
return n; // A root
else
findRoot(n.parent);
}
希望对您有所帮助
这会帮助你
private static BinaryNode getParent(AnyType x, BinaryNode<AnyType> t, BinaryNode<AnyType> parent) {
if (t == null) {
return null;
} else {
if (x.compareTo(t.element) < 0) {
return getParent(x, t.left, t);
} else if (x.compareTo(t.element) > 0) {
return getParent(x, t.right, t);
} else {
return parent;
}
}
}
如果您的节点类包含“值”整数变量。 sudo代码可以写成这样的东西
Node find_parent(Node currentNode, Node parentNode, int valueOfChildNode) {
Node finalNode = null;
if ( currentNode->value == valueOfChildNode ) return parentNode;
if ( currentNode->left_child)
finalNode = find_parent(currentNode->left_child,valueOfChildNode,currentNode);
if ( !finalNode && currentNode->right_child )
find_parent(currentNode->right_child,valueOfChildNode,currentNode);
return finalNode;
}
您可以根据需要进行更改。 您可以按照以下示例进行调用。
find_parent( binaryTree->root_node, null, 15);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.