我想使用C#生成一个二叉树,并在其中插入一个节点。
我尝试了很多方法,但没有生成任何二叉树。我想写一个函数,它将遍历树的根到叶,那么我该如何实现这一点呢?
在下面的代码中,二叉树是我的类。
找到我的以下代码。
int[] values = new int[] { 1, 2, 3, 4, 5 };
BinaryTree tree = new BinaryTree(values);
var node1 = new Node();
var node2 = new Node();
var node3 = new Node
作为一个初学者,我一直在尝试用python实现二叉树。并且已经成功地实现了很多,但只有一个问题,那就是我无法返回二叉树中所有元素(traverse())的列表。我在这里使用两个类:Node和BinaryTree。 节点类 class Node:
def __init__(self, val):
self.value = val
self.left = None
self.right = None 遍历方法返回二叉树中的所有元素。 def traverse(self): #<-- Problem here
t
二叉树,其中每个节点最多有两个子节点,子节点可以包含对其父节点的引用。
we do not differentiate the nodes and all nodes are considered identical.我们如何找到可以由N个相同节点组成的不同二叉树的数量。
例如:如果有3个节点,则有5个比较树
if 7 nodes then 429 trees
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not roo
我试图想出一个从二叉树/二叉树中删除重复项的算法。到目前为止我能想到的是
将树的顺序遍历存储在数组中。
如果树没有排序,则对数组进行排序。
从数组中删除重复项并重建二叉树。
我们是否也需要存储树的预顺序遍历来重建树?
这使得复杂性出现在O(n log n )时间和O(n)空间上。我们能做得更好吗?伪代码/代码示例将不胜感激。
编辑1:假设二叉树的结构由以下对象提供
public class Node
{
int data;
Node right;
Node left;
// getters and setters for the left and right node
二叉树与下面的二叉树代码相同或不相同,给出了线性复杂度,即大O (n),其中n是二叉树中节点数最少的节点数。
boolean identical(Node a, Node b)
{
if (a == null && b == null)
return true;
if (a != null && b != null)
return (a.data == b.data
&& identical(a.left, b.left)
我有一个简单的程序来序列化二叉树。代码:
public static <T> void serialize(TBST<T> tree, String fileName) throws FileNotFoundException, IOException {
/*
* using only 1 file will create a lot of confusion in coding.
*/
try (ObjectOutputStream oosNodeData = new ObjectOutputStr
因此,我试图在java中的二叉树(而不是搜索树)中放置一个元素。我到处寻找,我所能看到的就是将它插入到二叉树中的算法(我想要一个简单的二叉树)。给定父节点的值,我需要设置左和右子节点。我的计划如下:
public void addLeft(E elem, E parentVal) {
//Find node with parentVal
//Create node with element elem (call it newNode)
//Set the left child of the node with parentVal as newNode
}
最后两个步骤相当简单,所以我真正的问题