日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer 算法 (举例让抽象具体化)

發布時間:2025/10/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer 算法 (举例让抽象具体化) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述

從上往下打印出二叉樹的每個節點,同層節點從左至右打印。

解析:從上往下遍歷 root結點 左結點 右結點 每遍歷一個依次存入隊列 由隊列的先進先出 依次便可逐層存結點入數組中

/* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution { public:vector<int> PrintFromTopToBottom(TreeNode *root) {vector<int> Array;if(!root)return Array;vector<TreeNode *> Q;int cnt=0;Q.push_back(root);while( cnt< Q.size() ){TreeNode *Node=Q[cnt++];Array.push_back(Node->val);if(Node->left)Q.push_back(Node->left);if(Node->right)Q.push_back(Node->right);}return Array;} };
題目描述

輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。

解析:二叉查找樹(Binary Search Tree),(又:二叉搜索樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小于它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大于它的根結點的值; 它的左、右子樹也分別為二叉排序樹。

class Solution { public:bool VerifySquenceOfBST(vector<int> sequence) {int length = sequence.size();if( length == 0 )return false;int start = 0;int end = length-1;return Tree( sequence , start , end );}bool Tree( vector<int> sequence , int start , int end ){if( start == end || start == ( end + 1 ) )return true;int root = sequence[end];int i , j;for( i = start ; i < end ; i ++ )//左子樹{if( sequence[ i ] > root )break;}for( j = i ; j < end ; j ++ )//判斷是否符合右子樹{if( sequence[ j ] <= root )return false;}bool leftT = Tree( sequence , start , i - 1 );bool rightT = Tree( sequence , i , end - 1 );return leftT && rightT ;} };
題目描述

輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。

/* struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {} };*/ class Solution { public:vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {vector<vector<int> > array;vector<int> v;if( root == NULL || expectNumber == 0 )return array;int sum=0;preTree(root,expectNumber,array,v,sum);return array;}void preTree(TreeNode* root,int expectNumber,vector<vector<int> > &array,vector<int> v,int sum){if( root == NULL )return;sum += root->val;v.push_back(root->val);if( root->left == NULL && root->right == NULL ){if( sum == expectNumber )array.push_back(v);return;}preTree( root->left, expectNumber, array , v , sum );preTree( root->right, expectNumber, array , v , sum );} };

總結

以上是生活随笔為你收集整理的剑指offer 算法 (举例让抽象具体化)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。