二叉树
面试题
选择题:
1)设某二叉树的后序序列为cba,中序序列为abc,则前序序列为什么
CBA
ABC
CAB
BCA
2)一棵二叉树有67个结点,这些结点的度要么是0,要么是2。这棵二叉树中度为2的结点有______________个
33
34
32
30
3)下列关于m阶的B-树的论述不正确的是
B-树是一种平衡的多路查找树
树中每个结点至多有m棵子树
若根结点不是叶子结点,则至少有两棵子树
树中的叶子结点可出现在不同层次上
4)设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1,则T中的叶子数为()
5
6
7
8
6)已知二叉树Node定义如下, 现在需要设计一个方法交换左子树和右子树, 下列方法中, 可以实现交换的是? ()
class Node {
public:
Node* left;
Node* right;
char content;
Node(char content);
private:
Node(const Node&);
Node& operator=(const Node& node);
};
void swap(Node root) {Node* temp=root.left;root.left=root.right;root.right=temp;}
void swap(Node& left, Node& right) {Node temp=left; left=right;right=temp;}
void swap(Node* left, Node* right) {Node* temp=left; left=right;right=temp;}
void swap(Node*& left, Node*& right) {Node* temp=left; left=right;right=temp;}
6)已知一棵有2011个结点的树,其叶结点个数为116,该树对应的二叉树中无右孩子的结点个数是()。
115
116
1895
1896
问答题:
1)前序遍历
递归代码:
public static void preorderTraversalRec(TreeNode root){
if (root == null) {
return;
}
System.out.print(root.val + "->");
preorderTraversalRec(root.left);
preorderTraversalRec(root.right);
}
非递归代码:
public void preOrder1(BinaryNode<AnyType> Node)
{
Stack<BinaryNode> stack = new Stack<>();
while(Node != null || !stack.empty())
{
while(Node != null)
{
System.out.print(Node.element + " ");
stack.push(Node);
Node = Node.left;
}
if(!stack.empty())
{
Node = stack.pop();
Node = Node.right;
}
}
}
1)中序遍历
递归代码:
public static void inorderTraversalRec(TreeNode root){
if (root == null) {
return;
}
inorderTraversalRec(root.left);
System.out.print(root.val + "->");
inorderTraversalRec(root.right);
}
非递归代码:
public void midOrder1(BinaryNode<AnyType> Node)
{
Stack<BinaryNode> stack = new Stack<>();
while(Node != null || !stack.empty())
{
while (Node != null)
{
stack.push(Node);
Node = Node.left;
}
if(!stack.empty())
{
Node = stack.pop();
System.out.print(Node.element + " ");
Node = Node.right;
}
}
}
2)后序遍历
递归代码:
public static void postorderTraversalRec(TreeNode root){
if (root == null) {
return;
}
postorderTraversalRec(root.left);
postorderTraversalRec(root.right);
System.out.print(root.val + "->");
}
非递归代码: