0
点赞
收藏
分享

微信扫一扫

【ARM】v8架构programmer guide(3)_ARMv8的寄存器

汤姆torn 2024-08-08 阅读 31

选择题

🌈eg1

一棵有15个节点的完全二叉树和一棵同样有15个节点的普通二叉树,叶子节点的个数最多会差多少个()?

正确答案: C

A. 3      B. 5      C. 7       D. 9

🌈eg2

一棵有 n 个结点的二叉树,按层次从上到下、同一层从左到右顺序存储在一维数组 A[1…n] 中,则二叉树中第 i 个结点(i从1开始用上述方法编号)的右孩子在数组 A 中的位置是( )

正确答案:D

A. A[2i](2i <= n)
B. A[2i + 1](2i + 1 <= n)
C. A[i - 2]
D. 条件不充分,无法确定

🌈eg3 

已知-算术表达式的中缀表达式为 a-(b+c/d)*e , 其后缀形式为( )

正确答案:D
A. -a+b*c/d
B. -a+b*cd/e
C. -+*abc/de
D. abcd/+e*-

🌈eg4

将一棵有100个结点的完全二叉树从根这一层开始,开始进行层次遍历编号,那么编号最小的叶节点的编号为(),则编号为 98 的节点的父节点编号为()。 (根节点为1)

正确答案:51, 49

🌈eg5

设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是()。

正确答案:B

A. 空或只有一个结点   B. 高度等于其结点数

C. 任一结点无左孩子   D. 任一结点无右孩子

🌈eg6

某二叉树共有 399 个结点,其中 有199个为 度为2的 结点 ,则该二叉树中的叶子节点数为()

正确答案:C

A. 198     B. 199      C. 200    D. 201

🌈eg7

在一颗度为3的树中,度为3的结点有2个,度为2的结点有1个,度为1的结点有2个,则叶子结点有( )个

正确答案:D

A. 7     B. 0      C. 7    D. 6

🌈eg8

设一棵完全二叉树具有1000个结点,则此完全二叉树有()个度为2的结点。

正确答案:C

A. 497 B. 498 C. 499 D. 500


编程题

🎈eg1

从根到叶的二进制数之和

class Solution {
public:
    int dfs(TreeNode * root, int val){
        if(root == nullptr) return 0;
        val = (val << 1) | root->val; //二进制转10进制
        if(root->left == nullptr && root->right == nullptr) { //求叶子节点
            return val;
        }
        return dfs(root->left, val) + dfs(root->right, val);
    }
    int sumRootToLeaf(TreeNode* root) {
        return dfs(root, 0);
    }
};

🎈eg2 

二叉树的坡度

class Solution {
public:
    int ans = 0;
    int dfs(TreeNode* root){
        if(root == nullptr) return 0;
        int sl = dfs(root->left);
        int sr = dfs(root->right);
        ans += abs(sl - sr);
        return sl + sr + root->val;
        }
    int findTilt(TreeNode* root) {
        dfs(root);
        return ans;
    }
};

🎈eg3

奇偶树

class Solution {
public:
    bool isEvenOddTree(TreeNode* root) {
        queue<TreeNode*> q;
        q.push(root);
        int level = 0;
        while(!q.empty()){
            int sz = q.size();
            int pre = level == 0 ? 0 : 1e6 + 1;
            for(int i = 0; i < sz; i++){
                TreeNode* next = q.front();
                q.pop();
                // 偶数递减 奇数递增
                if((level == 0 && next->val <= pre) || (level == 1 && next->val >= pre)) 
                    return false;
                //奇偶
                if((level == 0 && next->val % 2 == 0) || (level == 1 && next->val % 2 == 1)) 
                    return false;
                pre = next->val;
                if(next->left) q.push(next->left);
                if(next->right) q.push(next->right);
            }
            level ^= 1;
        }
        return true;
    }
};
举报

相关推荐

0 条评论