int count(Node node) {
if (node == null)
return 0;
int r = count (node.right);
int l = count (node.left);
return 1 + r + l;
}
此函数返回根植于节点的二叉树中的节点数。有几篇文章说这是一个顺序前的遍历,但在我看来,这是一个后序遍历,因为在访问根之前,我们正在访问左边和右边的部分。我说错了吗?还是我“拜访”的想法是错的?
设计了一种算法(给出伪码),它给出一个二叉树,计算有两个子节点的数目。算法的运行时间是多少?
我重新尝试了我的问题,有人知道我提出的是正确的吗?这是我到目前为止所做的。这是正确的吗?
Function find2Children(T)
Input: a binary search, Tree
Output: number of nodes w / two children
count = 0
inOrderWalk(T)
if((leaf[x] ! = NULL)) && (right[x] ! = NULL))
count ++
return count
我们只需要搜索
我试图理解DFS算法的一般图形和树的具体情况。我注意到对于图和树,打印节点的顺序是不同的。
在图中,我们先打印父节点,然后打印子节点。
void Graph::DFS(int v)
{
// Mark the current node as visited and print it
visited[v] = true;
cout << v << " ";
// Recur for all the vertices adjacent to this vertex
vector<int>::iter
如果每个节点的两个子树是相同大小的,则二叉树是完整的。定义一个决定二叉树是否完成的函数。
我不知道如何编写下一个代码,我认为它是Leaf a == Node a,然后输出一个布尔值。
我的Haskell代码如下所示:
data Tree a = Leaf a | Node a [Tree a]
judcomplete :: Tree a -> Tree a -> Bool
judcomplete (Leaf x) (Node y (Leaf z)) = Leaf x == Node y (Leaf z)
我已经坐了大约两天了。我的任务是在java中创建一个左倾的最大d-堆。现向我提供大纲如下:
public LeftistDHeap(int d)
public void enqueue(T element)
public T dequeue()
public String breadthFirstSearch()
public String depthFirstPreOrder()
public String depthFirstPostOrder()
public void combine(LeftistDHeap<T> other)
public boolean isEmpty