我写了寻找二叉树直径的代码。但我不知道哪里出了问题。我写的两个函数及其定义如下:
int btree::diameteroftree(node* leaf)
{
if (leaf==NULL)
return 0;
int lheight = hieghtoftree(leaf->left);
int rheight = hieghtoftree(leaf->right);
int ldiameter = diameteroftree(leaf->left);
int rdiameter = d
我编写了一个递归函数来查找二叉树的最小值(假设它是无序的)。
代码如下所示。
//assume node values are positive int.
int minValue (Node n) {
if(n == null) return 0;
leftmin = minValue(n.left);
rightmin = minValue(n.right);
return min(n.data, leftmin, rightmin);
}
int min (int a, int b, int c) {
int min = 0;
if(b != 0 && c != 0)
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class Solution {
public int maxDepth(TreeNode root) {
TreeNode focusNode = root;
TreeNode focusNode2 = root;
int count = 0;
int count1 = 0;
这是查找二叉树最大深度的伪代码:
maxDepth(Node N)
1. If Nodes is leaf node then return 0
2. Else
(a) Get the max depth of left subtree recursively i.e.,
call maxDepth( N->left-subtree)
(a) Get the max depth of right subtree recursively i.e.,
call maxDepth( N->right-sub
def height(t):
''' (Tree) -> int
Return 1 + the number of nodes in longest path in Tree t.
>>> tree = Tree(23)
>>> height(Tree)
1
>>> tree = descendents_from_list(Tree(11), [2, 3, 4, 5, 6], 3)
>>> height(tree)
3
'''
num = 1
for i in t.
我一直试图遵循算法提供的,以求k‘最小的值在二叉树。但是,我不清楚如何搜索正确的子树(这是我的代码中的错误吗?)
例如,对于以下树: 9、3、6、5、8、13、14。
9
/ \
/ \
3 13
\ \
6 14
/ \
5 8
我得到的输出是:
k = 0, returned 3
k = 1, returned 6 // should return 5
k = 2, returned -1 // should return 6
k = 3, returned -1 // should return 8
k =
我很好奇,如果我实现一个代码来查找一个向量的最大部分,并且我使用了两个函数,其中一个函数使用分而治之算法,另一个函数使用普通递归。乍一看,我认为分而治之算法比其他算法效率低,因为它生成临时变量,比其他算法具有更多的比较。然而,当我测试它们时,它们的结果与我的想法完全不同。守则和结果如下:
// Divide and conquer
#include <bits/stdc++.h>
#define maxi 100000
long int c = 0; // counter for number of function cals
using namespace std;
using
我有一个多集,实现如下:
#include <bits/stdc++.h>
using namespace std;
multiset <int> M;
int numunder(int k){
/*this function must return the number of elements smaller than or equal to k
in M (taking multiplicity into account).
*/
}
一开始我以为我可以返回M.upper_bound(k)-M.begin()+1,不幸的是,我们似乎不能这
我创建了一个二叉树,现在我要删除一个节点。我希望你能为我提供一些投入。节点由字符而不是数字组成。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BinaryTree
{
public class BinaryTree
{
private BinaryTreeNode root;
public BinaryTree()
{