Given a rooted tree T with node profits and node demands, the capacitated subtree of a tree problem (CSTP) consists of finding a rooted subtree of the maximum profit, subject to having total demand no larger than the given capacity H. We first define the so-called critical item for CSTP and find upper bounds on the optimal value of CSTP in O(n2) time, where n is the number of nodes in T. We then present our branch-and-bound algorithm for solving CSTP and illustrate the algorithm by using an example. Finally, we implement our branch-and-bound algorithm by using one of the developed upper bounds and compare the computational results with those given by the branch-and-bound version of CPLEX and given by a dynamic programming algorithm for CSTP whose complexity is O(nH). The comparison shows that our branch-and-bound algorithm performs much better than both CPLEX and the dynamic programming algorithm, especially when n and H are large, for example, in the range of [50, 500] and [5000, 10,000], respectively.